目录
$@和$*的区别:二者都是表示数组的所有元素,在外面加上双引号下就会变成字符串,
然后"$*" 就是一个整体 "data1 data2 data3"
"$@"就是以单个字符串输出"data1" "data2" "data3"
注:先将参数赋给变量后,然后再用循环去调用的时候不加""是以单个字符串形式
加了""是以整个字符串形式
-z 只可以在 [] 和 [[]] 中使用;为空就执行,识别 a="" 为空
if [[ -z $a ]]
-n 只可以在 [] 和 [[]] 中使用;不为空就执行,识别 a="" 为空
if [[ -n $a ]]
! 表示取反,可以在 [] [[]] (()) 中都可以使用,识别 a="" 为空,效果与 -z 一样,! 使用更广泛一些
if ((! $a))
1.单引号真的很单纯,只是把内容扩起来当成引号用。
2.双引号需要调用变量内容时候用,中间内容没有变量时候也可单纯的当引号用
二者可以相互转化,二者都是可以将整数进行算数运算,输出的结果也都是整数,都不可接收浮点数,计算结果如果是小数也会转成整数(去小数位),而且写在其中的变量都可以不加$,但是let
语句无法输出,双括号却可以输出通过$((a))
的形式即可,这算是二者唯一的一个区别吧
二者主要是为了放置有输出的命令行,这样方便在 shell 中使用命令来扩展操作,都表示将命令的输出作为变量赋给某个新变量,二者可以替换。但在转义的时候反引号需要多加一个转义。
推荐使用$()
因为``
不太好识别,容易看错。