每种语言都有控制流程,Shell也不例外,同样也有和其他语言控制流程,例如:C、C++、Java、PHP、Python、C#等一样有自已的控制流程。
#!/bin/bash
# ----------Shell流程控制------------
:<<EOF
在文件中的写法
if conditon
then
command1
command2
...
commandn
fi
在控制台中的写法
if [ $(ps -ef | grep -c "ssh") -gt 1]:
then echo "true"; fi
if condition1
then
command1
elif condition2
command2
else
command3
fi
EOF
a=10
b=20
if [ ${a} == ${b} ]
then
echo "a等于b"
elif [ ${a} -gt ${b} ]
then
echo "a大于b"
elif [ ${a} -lt ${b} ]
then
echo "a小于b"
else
echo "没有符合条件的"
fi
:<<EOF
if condition
then
command1
else
EOF
num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
echo "两个数字相等"
else
echo "两个数字不想等"
fi
:<<EOF
for循环
for var in time1 item2 ...itemn
do
command1
command2
commadn3
...
commandn
done
for var in item1 item2 ... itemn:do command1; command2; .... done;
EOF
# 输出数字
for var in 1 2 3 4 5 6
do
echo "The value is:${var}"
done
# 输出字符串
for str in "This is a String"
do
echo ${str}
done
:<<EOF
while语句
while condition
do
command
done
EOF
# while输出
int=1
while(( ${int}<=5 ))
do
echo${int}
len "int++" # 此命令为bash let 命令,用于执行一个或多个表达式,变了计算不需要加$
done
# while输入和输出
echo '按下< CRT -D> 退出'
echo -n '输入你最喜欢的歌星名字:'
while read FILM
do
echo "${FILM}是一个有名的歌星 "
done
:<<EOF
while死循环
while :
do
command
done
while true:
do
command
done
for (( ; ; ))
EOF
# until循环
:<<EOF
until condition # condition为一般条件表达式,如果返回为false,则继续执行循环体内语句,否则跳出循环
do
command
done
EOF
a=0
until [ ! ${a} -lt 10 ]
do
echo ${a}
a=`expr ${a} + 1`
done
# case多选择语句
:<<EOF
case 值 in
模式1)
command1
command2
command3
...
commandN
;;
模式2)
command1
command2
...
comand3
;;
......
esac
EOF
echo "输入1 到 4 之间的数字:"
echo ‘你输入的数字为:’
read Num
case ${Num} in
1) echo '你选择了 1'
;;
2) echo '你选择了 2'
;;
3) echo '你选择了 3'
;;
4) echo '你选择了 4'
;;
*) echo '你输入的数不是1到4之间'
;;
esac
# 循环的跳出beark和continue
while :
do
echo -n '输入 1 到 5 之间的数字:'
read num
case ${num} in
1|2|3|4|5) echo '你输入的数字为${num}'
;;
*) echo '你输入的数字不在1 到 5 之间'
break
;;
esac
done
while :
do
echo -n '输入 1 到 5 之间的数字:'
read num
case ${num} in
1|2|3|4|5) echo '你输入的数字为${num}'
;;
*) echo '你输入的数字不在1 到 5 之间'
continue
echo '输入错误,结束!'
;;
esac
done