AIX作業系統shell的參數
來源:互聯網
上載者:User
command options files一些與傳遞給shell的參數相關的變數:$# 命令列參數的個數$? 調用命令的傳回值$$ 當前進程的進程號$! 最後一個後台命令的進程號$0 命令列的第一個參數,也就是命令名$n 命令列的第n個參數,如果要取超過9個參數${n}$* 所有的命令列參數,等於("$1 $2...")"$@" 所有的命令列參數,等於("$1" "$2"...)$_ 前一個命令的最後一個命令列參數一般有兩種主要的方法來分析傳遞給shell script的選項(option)。第一種方法是利用上述的shell variables和shift等命令,配合case命令來直接分析,在參數的個數比較少的情況下,這種方法比較常用。但如果參數數量比較多,就需要使用 getopts命令。
命令格式:
getopts option-string variable
getops解析命令列傳遞的參數的處理過程為:
1.getopts檢查所有的命令列參數,尋找以字元"-"開始的參數。
2.當找到以字元"-"開始的參數,將 "-"之後的字串和option-string比較。
3.如果找到符合的匹配,則指定的變數被設定,否則,此變數被設成?字元。
4.重複1到3,直到所有的選項被處理。
5.當分析結束,getopts返回一個非0傳回值,這常用做迴圈的判斷條件。另外,當getopts結束時,它還將變數OPTIND設為最後一個參數的下標。
【注意】當選項後面需要跟一個附加的參數時(如-i intputfile),在option-string中需要在相應的option中加冒號(如i: )。在這種情況下,當解析到此選項時,附加的參數會被賦值給OPTARG變數。
舉例:
下面的shell清單將能夠分析:
-i 指定輸入的檔案名稱
-o 指定輸出的檔案名稱
-v 指定使用詳細模式
shell script清單:
#!/usr/bin/ksh
USAGE="Usage: $0 '[-v] [-i] [filename] [-o] [filename]'"
VERBOSE=false
while getopts o:f:v OPTION ; do
case "$OPTION" in
o) OUTFILE="$OPTARG" ;;
i) INFILE="$OPTARG" ;;
v) VERBOSE=true ;;
\?) echo "$USAGE" ;
exit 1
;;
esac
done
echo Output file is $OUTFILE
echo Input file is $INFILE
echo In VERBOSE Mode:$VERBOSE