括号比较分类
1 小括号 ()
1.1 返回语句执行结果
a=$( echo 1.1 + 1.2 | bc )
1.2 数组定义
user=( awk -F":" '{print $1} ' /etc/passwd)
array=( $user )
1.3 类C for循环
for (( i = 0 ; i <10 ; i ++ ))
do
:
done
2 中括号
2.1 数学表达式计算
i=1
sum=$[$i +$i]
2.2 if 表达式
if [ $(echo 1 ==1 | bc) -eq 1 ]; then
:
fi
2.3 数组中元素标号
var=${array[1]}
2.4 正则表达式匹配
3 大括号
3.1 变量定义
${var} ${var[i]}
3.2 代码块 如下 为函数定义
function get ()
{
:
}
代码块定义
`
{
:
}
可视为匿名函数
PS: { }与 () 比较
( )
①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。
②命令替换。等同于cmd
,shell扫描一遍命令行,发现了
(cmd)结构,便将
(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。有些shell不支持,如tcsh。
{ }
①代码块,又被称为内部组,这个结构事实上创建了一个匿名函数 。与小括号中的命令不同,大括号内的命令不会新开一个子shell运行,即脚本余下部分仍可使用括号内变量。括号内的命令间用分号隔开,最后一个也必须有分号。{}的第一个命令和左括号之间必须要有一个空格。
4 浮点数计算
shell 不支持浮点数计算 ,因此计算浮点数有两种方法 bc ,awk
4.1 bc 一个shell 计算器 示例如下
echo "$i +$j" | bc
4.2 awk 你懂得
awk 'BEGIN {print $i + $i}'
4.3 浮点数比较
可以使用bc 比较 若为真返回1 否则返回0
if [ $( echo " 1 == 1 " |bc ) -eq 1 ]; then
:
fi