括号总结
() 单小括号
- 命令组,括号中的命令将会开一个新的子shell执行
- 括号中变量不能被剩下脚本使用
- 命令之间分号隔开
- 命令和括号之间可以没有空格
- 命令替换,等同于``反引号
- $(xxx)会被替换成命令执行结果
- 初始化数组
- arr=(a b c d)
filenum=$(ls | wc -l)
echo ${filenum}
filenum=`ls | wc -l`
echo ${filenum}
?
arr=(a b c d)
echo ${arr[0]} // a
echo ${arr[@]} //4
(()) 双小括号
- 整数计算,不支持浮点
- ((tmp=a+b))
- c=$((a+b))
- 算术运算比较
((c=2+1))
echo $c //3
d=$((1+2))
echo $d //3
?
// a==1 true
if (($a==1)); then
echo "a==1"
fi
//a==1 true
if ((a==1)); then
echo "a==1"
fi
[] 单中括号
- 判断命令: 一般参数为比较表达式
- 会根据比较的结果返回一个退出状态码
- 可用的比较运算符有:
- 字符串: ==, !=
- 整数: -eq, -gt, -lt, -ne, -ge, -le
- 逻辑: -a(||), -o(&&)
// aa == aa
if [ "aa" == "aa" ]; then
echo "aa == aa"
else
echo "aa != aa"
fi
// 1 < 2
if [ 1 -lt 2 ]; then
echo "1 < 2"
fi
//1 -lt 2 -o aa == bb
if [ 1 -lt 2 -o "aa" == "bb" ]; then
echo "1 -lt 2 -o aa == bb"
fi
[[]] 双中括号
- bash程序语言中的关键字,双括号中的支付不会发生参数扩展或者命令替换
- 支持字符串模式匹配和正则匹配
- 支持逻辑判断符: &&, ||, <, >
// hello 与 hell? 可以加括号,也可以不加
if [[ hello == hell? ]]; then
echo "hello == hell?"
fi
if [[ 2 -gt 1 && "hello" == "hell?" ]]; then
echo "2 > 1 && hello == hell?"
fi
{} 花括号
- 使用通配符对花括号内容进行扩展
- 不允许有空白(除非空白被引用或者转义)
- 代码块:
- 不会开一个新的shell, 变量可以被余下脚本使用
- 每句命令都要有分号
- 括号两边有空格
`touch {1..4}.txt` // touch 1.txt 2.txt 3.txt 4.txt
`touch {ex1, ex2}.txt` // touch ex1.txt ex2.txt
时间: 2024-10-10 07:31:10