一般過程式編程語言都分為三種:
1.順序執行
2.選擇執行
3.循環執行
接下來我們介紹下 順序執行和選擇執行的的語句的格式和簡單的例子
if ? ?語句
格式:
if ? ?判斷條件 ? ; ? ?then
當條件為真時要執行的分支代碼
elif
條件為真且不滿足第一條判斷條件時,分支執行的代碼
else
條件為假時要執行的分支代碼
fi
例子
基本的格式如上,但有時判斷條件少的時候也可不要else 和它的執行代碼。判斷條件比較簡單時也可以不要elif和它的執行代碼,更多情況下else更像時一個兜底的命令,負責結尾的提示。
注意:判斷條件也可以為命令,命令結果為真執行后面的分支代碼
case語句
格式:
case ? ?變量引用 ? ? in
pat1)
判斷pat1與變量匹配成功后要執行的分支代碼
;;
pat2)
判斷pat2與變量匹配成功后要執行的分支代碼
;;
*)
之上條件都不匹配后要執行的兜底代碼
;;
esac
例子:
注意:case語句可以支持通配符,可以用來判斷之前的yes no 的問題
平常常用的通配符:
* ? 表示任意長度的任意字符
? 任意單個字符
[ ] ?匹配范圍內任意單個字符
a|b ?表示a或b
循環執行:
1.將某代碼段重復運行多次
2.重復運行多少次
循環次數事先已知
循環次數事先未知3.有進入條件和退出條件
我們常用的循環語句有for、while、until等語句,下面就詳細介紹下他們的用法和格式。
for 語句
for ? 變量名 ? ?in ? ?列表 ?; ? do
循環體
done語句執行的機制:
依次將列表中的元素賦值給“變量名”;
每次賦值后即執行一次循環體; 直到列表中的元素耗盡,循環結束
例子:
列表生成方式:
1.直接給出列表
2.如{1..100} 或 $(seq ?1 ?2 ?100 )
3.返回列表的命令 ?$(cmd)
4.可以使用glob,如*.sh
5.變量引用 :$1 $2 $3 $# $@
while語句
格式:
while ? ? 滿足條件 ? ; ? ?do
循環體
done當條件為真時進入循環、為假使退出循環
條件一般應該有循環控制變量;而此變量的值會在循環體不斷地被修正
條件:CONDITION:循環控制條件;進入循環之前,先做一次判斷;每一次循環之后
會再次做判斷;條件為“true”,則執行一次循環;直到條件測試狀態為“false”終止循環例子:
while語句的特殊用法
while ? ?read ? ? line ?; ? do
循環體
done < /PATH/FROM/SOMEFILE依次讀取/PATH/FROM/SOMEFILE文件中的每一行,且將行賦值給變量line
until語句
格式
until ? ? ?CONDITION ? ?; ? ?do
循環體
done進入條件: CONDITION 為false
退出條件: CONDITION 為trueuntil與whtil特別的像 ,只是它們的判斷條件有些不同,正好相反。
退出循環語句命令:
continue ?[n] ?提前結束第N層的本輪循環,而直接進入下一輪判斷;最內層為第一層
break [n]?提前結束第N層循環,最內層為第1層
這些命令可以使我們的腳本更加的靈活
我們可以用這些循環做些有意思的事:
創建無限循環:
while true; do
循環體
doneuntil false; do
循環體
Done自定義打印國際象棋盤
echo -e “\e[1;33m<<******黃色43******>>\e[0m”
echo -e “\e[1;34m<<******藍紅44******>>\e[0m”
echo -e “\e[1;35m<<******洋色45******>>\e[0m”
echo -e “\e[1;36m<<******青色46******>>\e[0m”
echo -e “\e[1;37m<<******白色47******>>\e[0m”
read -p “The first color you want to choose is: ” ning
read -p “The second colors you want to choose are: ” meng
read -p “Please specify the size of the block: ” num
#color=`echo -e “\e[1;${ning}m\e[0m”`
for (( k=1 ; k<=$num ; k++ )) do
N=$N`echo -e “\e[1;${ning}m \e[0m\c”`
done
for (( k=1 ; k<=$num ; k++ )) do
M=$M`echo -e “\e[1;${meng}m \e[0m\c”`
done
#不能直接把很多個空格賦給變量,要用追加變量的方法
for (( i=1 ; i<=8 ; i++ )) ;do
# let n=$k*4
for (( j=1 ; j<=$num/2 ; j++ ));do
if [ $[i%2] -eq 0 ];then
for m in {1..4};do
#echo -e “\e[1;41m \e[0m\e[1;43m \e[0m\c”
echo -e “$N${M}\c”
# else
done
else
for l in {1..4};do
echo -e “$M${N}\c”
#echo -e “\e[1;43m \e[0m\e[1;41m \e[0m\c”
done
fi
echoecho -e “\e[1;33m<<******黃色43******>>\e[0m”
echo -e “\e[1;34m<<******藍紅44******>>\e[0m”
echo -e “\e[1;35m<<******洋色45******>>\e[0m”
echo -e “\e[1;36m<<******青色46******>>\e[0m”
echo -e “\e[1;37m<<******白色47******>>\e[0m”
read -p “The first color you want to choose is: ” ning
read -p “The second colors you want to choose are: ” meng
read -p “Please specify the size of the block: ” num
#color=`echo -e “\e[1;${ning}m\e[0m”`
for (( k=1 ; k<=$num ; k++ )) do
N=$N`echo -e “\e[1;${ning}m \e[0m\c”`
done
for (( k=1 ; k<=$num ; k++ )) do
M=$M`echo -e “\e[1;${meng}m \e[0m\c”`
done
#不能直接把很多個空格賦給變量,要用追加變量的方法
for (( i=1 ; i<=8 ; i++ )) ;do
# let n=$k*4
for (( j=1 ; j<=$num/2 ; j++ ));do
if [ $[i%2] -eq 0 ];then
for m in {1..4};do
#echo -e “\e[1;41m \e[0m\e[1;43m \e[0m\c”
echo -e “$N${M}\c”
# else
done
else
for l in {1..4};do
echo -e “$M${N}\c”
#echo -e “\e[1;43m \e[0m\e[1;41m \e[0m\c”
done
fi
echo代碼復制下來有點格式有點亂,不過還可以用
自定義打印矩形
read -p “Please enter the width value: ” high
read -p “Please enter the height value: ” width
for i in `seq $high` ;do
for j in `seq $width` ;do
color=$[RANDOM%7+31]
echo -e “\e[1;${color}m*\e[0m\c”
done
echo
done因為時間原因今天博客就寫到這,不過接下來會持續更新
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/98084