Shell 再学习

/dev/null     #unix下的无底洞回收站

var=hello world      #此时var的值是hello
var="hello world"    #此时var的值是 hello world

/------------------------------------------
#!/bin/sh
new=sa
echo "hello world"
echo "$new welcome!"  #结果是 "sa welcome!
"
echo "$newwelcome!"   #结果是 "",结果并不是我们期待的那样
echo "${new}welcome"  #结果是 "sawelcome!"

小结:"$"来获取变量时以空格为结束符,如果没有,则必须加上"{}"-----------------/


/----------------------------------------
#变量的赋值: 变量名=值
#等号两边不能有空格,如果需要空格,则必须用引号引起来
#shell变量区分大小写

name=sa  #正确
name= sa #错误,系统会把'sa'当作一个命令来解释,而忽略"name="!
name="sa bc" #正确

readonly variable # 只读变量!  ---------------------------------------/


/----------------------------------------
#环境变量:用于所有的用户进程
#条件:
# 可用于所有的子进程(登录进程为父进程)
# 可以在命令行中设置,但用户注销后将丢失
# 均为大写!且必须用export命令导出

NAME=grape
export NAME  --------------------------------------------------------/


/-----------------------------------------
# 变量长度
var=abc       #或者 var="abc"
echo ${#var}  #输出"3",得到字符串的长度(包括空格)

var=(ac b c)      #var是数组
echo ${#var}     #第一个数组元素的长度,相当于 ${#var[0]}
echo ${#var[*]}  #得到数组元素的个数 ----------------------------------/


/------------------------------------------
#变量扩展:字符串处理工具

字符串替换:
${var/sour/dest} #将var中第一个"sour"替换为"dest"
${var//sour/dest} #将var中的所有的"sour"替换为"dest"

字符串截取:
${var:pos}   #截取变量var位置pos开始后的值(pos从0开始)
${var:pos:len} #截取变量var从pos开始长度为len的值
${var#pattern}  #从前端开始,截去符合pattern的最短子串,返回剩余字符串
${var##pattern} #..........................最长子串,............
${var%pattern}  #从后端开始,截去符合pattern的最短子串,............
${var%%pattern} #..........................最长子串,............

如:var="rabcda"
echo ${var:1}   #输出:abcda
echo ${var:1:2}  #输出:ab
echo ${var/a/x}  #输出:rxbcda
echo ${var//a/x}  #输出:rxbcdx,但并未改变var值!
echo ${var#?a}   #输出:bcda
echo ${var##?a}  #输出:bcda
echo ${var%*a}   #输出:rabcd
echo ${var%%?a}  #输出:rabc   

注意,用%时是从后向前匹配,因此适当要用通配符!----------------------/


/-----------------------------------------
#特定变量参数: 其值和命令的上下文有关!
$#     #传递给脚本参数的个数
$$     #脚本运行的当前进程ID号
$?     #最后一个命令退出的状态变量(正常为0)
$0     #运行的脚本的名字 如 ./a.sh,值为"./a.sh";若想得到"a.sh",则需要执行`basename $0`
$1     #脚本后面跟着的第一个参数
${10}  #脚本后面跟着的第10个参数---------------------------------------/


/-----------------------------------------
# 数值运算

如  echo $((2#1001)) ,输出的是"1001"对应的十进制数 "9"  ---------------/

如  let a=2*3  ,输出的是 "6";加入变量 let a=${a}*2 ,输出 "12"

如  let a=2**3 ,指数运算,输出 "8"

如  a=2;echo $(($a+1)) ,输出 "3"


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值