引數說明:
詳細說明
如果option_string不用:開頭,invalid option錯誤和miss option argument錯誤都會使varname被設成?。
getopts包含兩個內建變數,optarg和optind
#!/bin/bash
quiet=
verbose=
device=
logfile=/tmp/default
usage()
[ $# -eq 0 ] && usage
#option_string以冒號開頭表示遮蔽指令碼的系統提示錯誤,自己處理錯誤提示。
#後面接合法的單字母選項,選項後若有冒號,則表示該選項必須接具體的引數
while getopts :qvd:l: option
do case $option in
q)quiet=y
;;v)
verbose=y
;;d)
device=$optarg #$optarg為特殊變數,表示選項的具體引數
;;l)
logfile=$optarg
;;\?) #如果出現錯誤,則解析為?
usage
;;esac
done
#$optind為特殊變數,表示第幾個選項,初始值為1
shift $(($optind - 1)) #除了選項之外,該指令碼必須接至少乙個引數
if [ $# -eq 0 ]; then
usage
fiif [ -z "$device" ]; then #該指令碼必須提供-d選項
echo "you must specify device with -d option"
exit
fiecho "you chose the following options.."
echo "quiet=$quiet verbose=$verbose device=$device logfile=$logfile"
for file in $@ #依次處理剩餘的引數
do echo "processing $file"
done
Shell指令碼學習 命令列引數處理
在linux 的shell 中怎樣處理tail n 10 access.log這樣的命令列選項 呢?這是被別人問起的乙個問題,好好學習 了一下,進行總結如下 在bash中,可以用以下三種方式來處理命令列引數 每種方式都有自己的應用場景。1.直接處理,依次對 1,2,n進行解析,分別手工處理 2.ge...
shell指令碼程式設計 處理命令列引數
1 讀取引數 bash shell使用位置引數的特殊變數記錄命令列引數,0是程式名,1 9依次為輸入引數 如果指令碼需要多餘9個變數,需要將變數數字加花括號,如 命令列輸入的引數需要以空格分隔,當空格作為引數的一部分時可以使用引號分開 在指令碼中對命令列引數進行處理時需要對引數進行有效性判斷,如 1...
獲取命令列引數
在win32控制台應用程式中,主函式為 int main intargc,char argv 其中argc為引數個數,我們可以如此呼叫 for i 0 i 在win32應用程式中呢?主函式為 int winapi winmain hinstancehinstance,hinstancehprevin...