Shell 流程控制和函数
1. if-else
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
写成一行(适用于终端命令提示符):
$ if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "True"; else echo "False"; fi
2. for 循环
for var in item1 item2 ... itemN
do
command
done
写成一行(适用于终端命令提示符):
$ for ((i=0; i<5; i++)); do echo "$i"; done
3. while 循环
while condition
do
command
done
写成一行(适用于终端命令提示符):
$ n=1
$ while [ $n -le 5 ]; do echo "$n"; let n++; done
4. until 循环
until condition
do
command
done
写成一行(适用于终端命令提示符):
$ n=1
$ until [ $n -gt 5 ]; do echo "$n"; let n++; done
while 循环,当 condition 为真时执行循环体;until 循环刚好和 while 循环相反。
5. case 语句
case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。
取值后面必须为单词 in,每一模式必须以右括号结束。取值可以为变量或常数。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。
case 值 in
模式1)
command1
;;
模式2)
command1
;;
*)
command1
;;
esac
6. 函数
[ function ] funname()
{
action;
[return int]
}
- 可以使用 function fun() 定义,也可以直接 fun() 定义。不带任何参数。
- 可以加 return 返回。如果不加,将以最后一条命令运行结果,作为返回值。
函数返回值在调用该函数后通过 $? 来获得。
注意:所有函数在使用前必须先定义。调用函数使用其函数名即可。
调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值。当 n>=10 时,需要使用 ${n} 来获取参数。