单双引号有区别。 变量放在单引号里面告诉shell忽略特殊字符,双引号告诉shell解释原有符号的原有意义。
N=1 var="1 2 $N" echo $var ----> 1 2 1 var1= '1 2 $N' echo $var1 ---> 1 2 1${}的定义
切片字符串 替换字符串 截取字符串
var='hello world' echo ${var:1:4} #解释为:将var字符串从第一个开始往后截取4个 echo ${var:(-3):2} #解释为:将var字符串倒数第三个开始,往后截取2个字符 echo ${var/test1/test2} # 解释为将var字符串test1替换为test2,替换第一个 echo ${vare://test1/} #解释为将var字符串中所有的test1替换为空字符串 echo ${var://[0-9]/} #解释为将var字符串中的所有数字替换为空字符串 echo ${var#*//} #解释为删除var字符串中以‘//’分割的左侧的所有前缀变量状态赋值
${var:-string} #解释为var为空则返回string ${var:+string} #解释为var不为空则返回string ${var:=string} #解释为var为空就重新赋值判断变量是否为真
[ -n "$a" ] && echo yes || echo no #解释为$a不等于零为真,等于零为假 [ -z "$a" ] #解释为$a为零则为真,不等于零为假 [ -e path ] #解释为判断path是否存在,存在为真,不存在为假 [ -f file_path ] #解释为判断文件存在为真,不存在为假 [ -d dir_path ] #目录存在为真,不存在为假 [ -r file_path ] #解释为判断文件是否存在可读权限,拥有可读权限为真,否则为假 [ -w file_path ] #解释为判断文件是否有可写权限,有则为真 [ -x file_path ] #解释为文件是否有可执行权限,拥有可执行权限为真 [ -s file_path ] #解释为文件存在并且大小大于零为真,file_path存在并且大小大于0为真布尔运算符
[ ! 1 -eq 2 ] 为真。条件结果取反 [ 1 -eq 1 -a 2 -eq 2 ] 为真,和关系true and true 为true [ 1 -eq 1 -o 2 -eq 1 ] 为假,或关系true or false 为false逻辑判断符
&& 逻辑和,前面为真则执行后面的 || 逻辑或,前面为假则执行后面的整数运算
+ 加 - 减 * 乘 / 除 % 取余运算表达式
$(()) $((1+1)) $[] $[1+1] echo $[2*3] echo $((2>3)) :0 echo $((2<3)) :1 echo $[2>1] :1 echo $[1>2] :0