【shell编程】shell中的括号、双括号、方括号和双方括号
shell中的括号、双括号、方括号和双方括号
语法:
(( 表达式1,表达式2…))
特点:
- 在双括号结构中,所有表达式可以像c语言一样,如:
a++,b--
等。 - 在双括号结构中,所有变量可以不加入:
“$”
符号前缀。 - 双括号可以进行逻辑运算,四则运算
- 双括号结构 扩展了
for,while,if
条件测试运算 - 支持多个表达式运算,各个表达式之间用
“,”
分开
#!/bin/sh
a=1;
b=2;
c=3;
((a=a+1));
echo $a;
a=$((a+1,b++,c++));
echo $a,$b,$c
输出:
# sh testsh.sh
2
3,3,4
使用双括号,在比较过程中使用高级数学表达式:
符号 | 描述 |
---|---|
val++ | 后增 |
val-- | 后减 |
++val | 先增 |
--val | 先减 |
! | 逻辑求反 |
~ | 位求反 |
** | 幂求反 |
<< | 左位移 |
>> | 右位移 |
&& | 逻辑和 |
例如1:
$ cat test23.sh
#!/bin/bash
val1=10
if(( $val1 ** 2 > 90 ))
then
((val2 = $val1 ** 2))
echo "The square of $val1 is $val2"
fi
输出:
# ./test23.sh
The square of 10 is 100
#!/bin/bash
num=3
for ((i = 0; i < $num; i++))
do
echo "Iteration $i"
done
for ((i = 0; i < num; i++))
do
echo "Iteration $i"
done
输出:
双方括号
- 双方括号提供了字符串比较的高级特性。
- 括号中可以定义一些正则表达式来匹配字符串
- 注意不是所有的shell都支持双方括号!
$ cat test24.sh
#!/bin/bash
if [[ $USER == s* ]]
then
echo "Hello Seal"
else
echo "Sorry, I do not know you"
fi
输出:
# ./test24.sh
Hello Seal
参考资料
2. linux shell “(())” 双括号运算符使用