每種語言都有控制流程,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