getopt命令並不是bash的內建命令,它是由util-linux包提供的外部命令。
getopt 與 getopts 的區別
getopts 是 shell 內建命令, getopt 是乙個獨立外部工具
getopt 命令選項說明:
getopt 命令的選項說明:
-a 使getopt長選項支援"-"符號打頭,必須與-l同時使用
-l 後面接getopt支援長選項列表
-n program如果getopt處理引數返回錯誤,會指出是誰處理的這個錯誤,這個在呼叫多個指令碼時,很有用
-o 後面接短引數選項,這種用法與getopts類似,
-u 不給引數列表加引號,預設是加引號的(不使用-u選項),例如在加不引號的時候 --longopt "select * from db1.table1" $2只會取到select ,而不是完整的sql語句。
選項的使用定義規則類似 getopts :
例如 ab:c::
意思是: a 後沒有冒號,表示沒有可以引數
b 後跟乙個冒號,表示有乙個必要的引數
c 後跟兩個冒號,表示有乙個可選的引數(引數必須緊挨著選項)
長選項的定義相同,但用逗號分割。
#!/bin/bash
#定義選項, -o 表示短選項 -a 表示支援長選項的簡單模式(以 - 開頭) -l 表示長選項
# a 後沒有冒號,表示沒有引數
# b 後跟乙個冒號,表示有乙個必要引數
# c 後跟兩個冒號,表示有乙個可選引數(可選引數必須緊貼選項)
# -n 出錯時的資訊
# -- 也是乙個選項,比如 要建立乙個名字為 -f 的目錄,會使用 mkdir -- -f ,
# 在這裡用做表示最後乙個選項(用以判定 while 的結束)
# $@ 從命令列取出引數列表(不能用用 $* 代替,因為 $* 將所有的引數解釋成乙個字串
# 而 $@ 是乙個引數陣列)
getopt命令與getopts命令不同,它實際上是通過將引數規範化來幫助我們處理的。具體的用法,如下面的指令碼:
#!/bin/bash
#echo $@
#-o或--options選項後面接可接受的短選項,如ab:c::,表示可接受的短選項為-a -b -c,其中-a選項不接引數,-b選項後必須接引數,-c選項的引數為可選的
#-l或--long選項後面接可接受的長選項,用逗號分開,冒號的意義同短選項。
#-n選項後接選項解析錯誤時提示的指令碼名字
args=`getopt -o ab:c:: --long along,blong:,clong:: -n 'example.sh' -- "$@"`
if [ $? != 0 ]; then
echo "terminating..."
exit 1
fi#echo $args
#將規範化後的命令列引數分配至位置引數($1,$2,...)
eval set -- "$"
while true
docase "$1" in
-a|--along)
echo "option a";
shift
;;-b|--blong)
echo "option b, argument $2";
shift 2
;;-c|--clong)
case "$2" in
"")echo "option c, no argument";
shift 2
;;*)
echo "option c, argument $2";
shift 2;
;;esac
;;--)
shift
break
;;*)
echo "internal error!"
exit 1
;;esac
done
#處理剩餘的引數
for arg in $@
doecho "processing $arg"
done
需要注意的是,像上面的-c選項,後面是可接可不接引數的,如果需要傳遞引數給-c選項,則必須使用如下的方式:
#./getopt.sh -b 123 -a -c456 file1 file2
option b, argument 123
option a
option c, argument 456
processing file1
processing file2
使用 getopt 處理命令行長引數(長選項)
getopt命令並不是bash的內建命令,它是由util linux包提供的外部命令。getopt 與 getopts 的區別 getopt 命令選項說明 getopt 命令的選項說明 a 使getopt長選項支援 符號打頭,必須與 l同時使用 l 後面接getopt支援長選項列表 n progra...
Linux程式設計 用getopt處理命令列引數
函式宣告如下 include int getopt int argc,char const argv,const char optstrin g extern char optarg extern int optind,opterr,optopt 以下是一些主要的介紹。詳細的介紹參閱 該函式的arg...
使用getopt解析命令列引數
python中可以使用getopt來解析命令列引數,其定義如下 getopt args,shortopts,longopts 其中,getopt返回opts,args元組,opts是根據shortopts,longopts引數解析出來的 key,value 列表,而其他剩餘引數就會放到args列表中...