您好,欢迎访问一九零五行业门户网

Shell里面括号的用法

中括号
中括号分为单中括号[],和双中括号[[]],中括号一般用于表达式判断中,小括号也可以用于表达式,这个后面提到。
单中括号[]
a=5 b=3 [ $a -eq $b ] 判断a是否等于b [ ${a} -eq ${b} ] 作用同上 [ "${a}" -eq "${b}" ] 作用同上
a=abc [ $a == "abc" ] 或写成 [ ${a} == "abc" ] 或写成 [ "${a}" == "abc" ] [ $a \> "abc" ]
[ -d ./aaa.sh -a -e ./bbb ] 测试aaa.sh是否为目录并且bbb是否存在,如果都符合则返回真 [ -d ./aaa.sh -o -e ./bbb ] 测试aaa.sh是否为目录并且bbb是否存在,满足一个条件则返回真
我们通过上面可以看出使用单中括号的一些规则:
变量与中括号之间要有空格
变量与操作符之间也要有空格
变量可以直接用$进行引用,也可以使用${}以及"${}"进行引用,虽然可以直接使用${},但是建议还是用"${}",或者直接用$,来引用变量
字符串要用双引号引起来
字符串比较一般使用==来做字符串是否相同测试,使用<或者>进行大小比较,在单中括号中对字符进行大于和小于的比较要用转移\>和\<。比较原理就是对比ascii进行对比。
另外在单中括号中还可以使用-a和-o这样的逻辑运算符
双中括号[[]]:
a=5 b=3 [[ $a -eq $b ]] 判断a是否等于b [[ ${a} -eq ${b} ]] 作用同上 [[ "${a}" -eq "${b}" ]] 作用同上
a=abc [[ $a == "abc" ]] 或写成 [[ ${a} == "abc" ]] 或写成 [[ "${a}" == "abc" ]] 或写成 [[ $a == abc ]] [[ $a > "abc" ]]
[[ -d ./aaa.sh && -e ./bbb ]] 测试aaa.sh是否为目录并且bbb是否存在,如果都符合则返回真 [[ -d ./aaa.sh || -e ./bbb ]] 测试aaa.sh是否为目录并且bbb是否存在,满足一个条件则返回真
a=abc [[ $a =~ "a" ]] 做模式匹配,这个表达式为真 或写成 [[ ${a} =~ "a" ]] 或写成 [[ "$[a]" =~ "a" ]] [[ $a = a* ]] 表达式为真 [[ $a = b* ]] 表达式为假
双中括号的使用和单中括号的使用规则类似
双中括号中间字符串的大于小于比较不需要转义,且字符串可以不用双引号引用
双中括号里面可以使用&&、||做逻辑运算符
双中括号里面还可以做模糊匹配,使用=~表达式2可以是正则表达式
[ 表达式1 -a 表达式2 ] 等效于 [[ 表达式1 && 表达式2 ]] 等效于 [ 表达式1 ] && [ 表达式2 ] 等效于 [[ 表达式1 ]] && [[ 表达式2 ]]
[ 表达式1 -o 表达式2 ] 等效于 [[ 表达式1 || 表达式2 ]] 等效于 [ 表达式1 ] || [ 表达式2 ] 等效于 [[ 表达式1 ]] || [[ 表达式2 ]]
小括号
单小括号
单小括号单独使用是表示指令组,会通过子shell的方式依次执行括号中的命令
(ls ./;echo "hello";mkdir -p /tmp/ccc)
最常见的用法这是命令替换中使用,命令替换也可以使用反引号``
echo "当前目录是:$(pwd)" echo "当前目录是:`pwd`"
双小括号
常用在算术运算上以及在for循环中也会用到
a=$((5+3)) b=$(($a+4))
for语句的形式
1到10循环执行
写法1: for i in (1..10);do done 写法2: for i in seq 1 10;do done 写法3: for (( i=1 ; i<=10 ; i++ )); do done
while语句的形式
1到10循环
i=1 while [ $i -le 10 ];do let i++ done
其它类似信息

推荐信息