shell腳本-循環選擇語句


shell腳本-循環選擇語句

過程式編程語言:
順序執行
選擇執行
循環執行
注:條件中的變量,可以在執行語句中使用,不用在加上"$"。

if語句

	根據命令的退出狀態來執行命令
	單分支
		if  判斷條件;then
			條件為真的分支代碼
		fi
	雙分支
		if  判斷條件; then
			條件為真的分支代碼
		else
			條件為假的分支代碼
		fi
	多分支
		if  判斷條件 1 ; then
			條件為真的分支代碼
		elif  判斷條件 2 ; then
			條件為真的分支代碼
		elif  判斷條件 3 ; then
			條件為真的分支代碼
		else
			以上條件都為假的分支代碼
		fi
		逐條件進行判斷,第一次遇為“真”條件時,執行其分支,而后結束整個if 語句

case 語句

	case用法:
		case 變量引用 in
		PAT1)
			分支1
			;;
		PAT2)
			分支2
			;;
			...
		*)
			默認分支
			;;
		esac
	case 支持glob 風格的通配符:
		*:  任意長度任意字符
		?:  任意單個字符
		[]:指定范圍內的任意單個字符
		a|b: a 或b

for語句

	for  變量名 in 列表;do
		循環體
	done
		依次將列表中的元素賦值給“變量名”; 每次賦值后即執行一次循環體;  直到列表中的元素耗盡,循環結束。
	or
	for ((exp1;exp2;exp3)); do
		COMMANDS
	done
		控制變量初始化:僅在運行到循環代碼段時執行一次
		控制變量的修正表達式:每輪循環結束會先進行控制變量修正運算,而后再做條件判斷
	列表生成方式:
		直接給出列表
		整數列表:
			(a) {start..end}
			(b) $(seq [start [step]] end)==`        `
		返回列表的命令
			$(COMMAND)
		使用glob,如:*.sh
		變量引用;
			$@, $*

while語句

	while CONDITION; do
		循環體
	done
	CONDITION:
		循環控制條件,進入循環之前,先做一次判斷,每一次循環之后會再次做判斷。
		條件為"true" ,則執行一次循環,直到條件測試狀態為"false" 終止循環。
		CONDTION 一般應該有循環控制變量,而此變量的值會在循環體不斷地被修正。
	進入條件:
		CONDITION 為true
	退出條件:
		CONDITION 為false
	特殊用法
		遍歷文件的每一行
		while read line(任意); do
			循環體
		done < /PATH/FROM/SOMEFILE
		or
		命令、文件或其他(標准輸出) |while read line; do
			循環體
		done 
		依次讀取/PATH/FROM/SOMEFILE文件中的每一行,且將行賦值給變量line

until語句

	until CONDITION; do
		循環體
	done
	CONDITION:
		循環控制條件,進入循環之前,先做一次判斷,每一次循環之后會再次做判斷。
		條件為"false" ,則執行一次循環,直到條件測試狀態為"true" 終止循環。
		CONDTION 一般應該有循環控制變量,而此變量的值會在循環體不斷地被修正。
	進入條件: 
		CONDITION  為false
	退出條件: 
		CONDITION  為true

控制語句

	continue
		用於循環體中,直接繼續下個循環。
		continue [N],提前結束第N層的本輪循環,而直接進入下一輪判斷,最內層為第1層。
	break
		用於循環體中,退出整個循環。
		break [N],提前結束第N層循環,最內層為第1層。
	shift
		用於將參量列表list左移指定次數,缺省為左移一次。
		shift [n],移動N個位置,參量列表list 一旦被移動,最左端的那個參數就從列表中刪除。
		while 到循環遍歷位置參量列表時,常用到 shift。
			$1=a,  $2=b,  $c=d
			shift
			$1=b,  $2=d
			shift
			$1=d
	wait
		用於等待命令執行結束,並exit 退出

select語句

	select 變量名 in LIST ; do
		循環體命令
	done
	select 循環主要用於創建菜單,按數字順序排列的菜單項將顯示在標准錯誤上,並顯示 PS3 提示符,等待用戶輸入。
	用戶輸入菜單列表中的某個數字,執行相應的命令。
	用戶輸入被保存在內置變量 REPLY中。
		PS3="INPUT:"
		select menu in bai hei hong lv;do
			echo $menu
		done
	select與case的對比
		select 是個無限循環,因此要記住用 break令退出循環,或用 exit命令終止腳本,也可以按 ctrl+c退出循環。
		select 經常和 case 聯合使用
		與for循環類似,可以省略in LIST,此時使用位置參量。

trap信號捕捉

	trap ' 觸發指令'  信號
		自定義進程收到系統發出的指定信號后,將執行觸發指令,而不會執行原操作。
	trap ' '  信號
		忽略信號的操作
	trap '-'  信號
		恢復原信號的操作
	trap -p
		列出自定義信號操作
	trap 示例
		#!/bin/bash
		trap 'echo “signal:SIGINT"' int
		trap -p
		for((i=0;i<=10;i++))
		do
				sleep 1
				echo $i
		done
		trap '' int
		trap -p
		for((i=11;i<=20;i++))
		do
				sleep 1
				echo $i
		done
		trap '-' int
		trap -p
		for((i=21;i<=30;i++))
		do
				sleep 1
				echo $i
		done


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM