shell特殊变量:
$0 当前脚本的文件名
$n 传递给脚本或函数的参数; n 是一个数字,表示第几个参数;也可以用于函数的参数
$# 传递给脚本或函数的参数个数
$* 传递给脚本或函数的所有参数
$@ 传递给脚本或函数的所有参数
$? 上个命令的退出状态,或函数的返回值
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID
$* 和 $@ 的区别:
$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号""包含时,都以"$1" "$2" … "$n" 的形式输出所有参数
当它们被双引号""包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数
运算符:
算术运算符:+ - * / % =(赋值) == !=
关系运算符:-ne -eq -gt -lt -ge -le
布尔运算符:!(非) -o(或) -a(与)
字符串运算符:== != -z(空) -n(非空)
文件测试操作:
-e 文件是否存在
-f 是否为普通文件
-d 是否为目录
-w 是否具有写权限
-x 是否具有执行权限
条件语句:
if <condition>
then
<statement>
fi
if <condition>
then
<statement>
elif <condition>
then
<statement>
else
<statement>
fi
case <variable> in <range>
<value>)
<statement>
;;
...
esac
循环语句:
while <condition>
do
<statement>
done
for <variable> in <range>
do
<statement>
done
shell函数:
<function_name>(){
<statement>
}
函数调用以及传参: <function_name> <para1> <para2>...<paran>
shell替换:
`` <=> $() 命令替换
$ 、${} 变量替换,一般情况下没有区别
$(()) 其中的变量名称,可于其前面加 $ 符号来替换,也可以不用
[[是 bash 程序语言的关键字,支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式;
字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,而[]内不能使用正则