Shell師徒西天取經----第四天Shell的控制流程

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章