当初自己在学习shell编程的时候,被各种括号的用法搞得头昏脑涨。靠着逐步的熟悉和积累,才终于掌握的所有的括号的用法。现在,把自己总结出来的分享给大家。
注:看本篇文档的前提是你已经有了bash以及shj Z | F : Xell编程的Q & q 9 0 u w ~基础。
单小括号()
但小括号常见的两个作用:命令替换以及数组的初始化
命令替换
当碰到$()结构时,shell就把括号的内命令执行,并返回结e N . _ m Z + e O果
# tmp=$(date) # echo $tmp Fri Sep 18 10:22:30 CST 2020
初始化数组
# 初始化数组 lnmp=(li] p $ Bnux nginx mysql php)
双小括号(())
记住双括号有一个特点,就是括@ h _ !号内的要符合c语言的语法,使用变量名时不需要加上$符号的。
双小括号的用法比较多,它可以用作整数计算(不支持小数)。例如:$((3+2)V ` 7 ( X t)
# ecc } 1 ^ w { o c yho $((1+3))
4
# n1=3
# echo $((n1+7))
10
只要符合c语言语法的运算扩展,都可以写在括号里
# echl ) H Vo $((3+4>5 ? 1 :0))
1
# echo $((3+4>9 ? 1 :0))
0
重新给c ^ u g a Z变量赋值,这个时候不可在括号外加$符
#H I ! i=1;((i++));echo $i;
2
# i=1;((i=100));echo $i;
100
双括号还经常用在for循环中
for ((i=0;i<5;i++));do echo -n $i;done
单方括号[]
单方括号最常见用于逻辑判断中,另外它还可以作为数组的下标,以及在正则中表示一段范围
shell脚本中用于条件判断:
if [ 1 > 2 ] then …… fi
也可以作为数组下标:
# echo ${lnmp[1]} nginx
在正则中使用,表示一段范围
[0-9] 表示数子0-9都行
双方括号
和单括号一样j 9 G _ } z 5 s,双方括号也用在条件判断中,但它比单方括号更加的通用。下面举一个例子:
[ a &g6 i @ 9 i ,t; b ] &G e ;& [ a > 0 ]或[ a > b -a a > 0 ] 改成双括号 [[ a > b && a > 0 ]]
单花括号{}
花括号拓展。(通配(globbing))将对花括号中的文件名做扩展。在大@ , G w Z c I f ]括号中,不允许有u X z y空白,除非这个空白被引用或转义。
比如输入命令 rm -f {1,2}.txth E = k T J将删除1.txt和2.t{ X ; 8 5 xt文件。
单花括号中..的f g } U作用
两个点在这里表r | j t P示一段范C C L 6围的意思。比如
echo{ ; 9 Z 7 I Q {1..10} #将打印1,2,3,4,5,6,7,8,9,10
花括号还常用在shell脚本里,用于代码块。
初次之外,单花括号还可以用作变量内容的@ l r ^ K替换和删除以及变量内p ] o ] Q 2 ;容的测试,给出一个常见的例子。我们常常会判断一个变量是否存在,如[ M s N ` @ | B果不存在,则给该变量设置新值。
valV @ T 8 U U=${n1:-test}
上面代码表示如果n1这个变量不存在或为空,则将val变量值设置为test,否则val值为n1变量的值
以上就是全面整理linux下shell中各种括号的作用及用法的详细内容。S | P