亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Linux > 正文

bash shell命令行選項與修傳入參數處理

2019-10-26 18:40:08
字體:
來源:轉載
供稿:網友


在編寫shell程序時經常需要處理命令行參數,本文描述在bash下的命令行處理方式。
選項與參數:
如下命令行:
  代碼如下:
./test.sh -f config.conf -v --prefix=/home
-f為選項,它需要一個參數,即config.conf, -v 也是一個選項,但它不需要參數。
--prefix我們稱之為一個長選項,即選項本身多于一個字符,它也需要一個參數,用等號連接,當然等號不是必須的,/home可以直接寫在--prefix后面,即--prefix/home,更多的限制后面具體會講到。
在bash中,可以用以下三種方式來處理命令行參數,每種方式都有自己的應用場景。
* 手工處理方式
* getopts
* getopt
依次討論這三種處理方式。
1,手工處理方式
在手工處理方式中,首先要知道幾個變量,還是以上面的命令行為例:
代碼如下:
*    $0 : ./test.sh,即命令本身,相當于c/c++中的argv[0]
*    $1 : -f,第一個參數.
*    $2 : config.conf
*    $3, $4 ... :類推。
*    $#  參數的個數,不包括命令本身,上例中$#為4.
*    $@ :參數本身的列表,也不包括命令本身,如上例為 -f config.conf -v --prefix=/home
*    $* :和$@相同,但"$*" 和 "$@"(加引號)并不同,"$*"將所有的參數解釋成一個字符串,而"$@"是一個參數數組。
例子:

代碼如下:
#!/bin/bash
for arg in "$*"
do
   echo $arg
done
for arg in "$@"
do
 echo $arg
done

執行./test.sh -f config.conf -n 10 會打?。?BR>-f config.conf -n 10    #這是"$*"的輸出
-f   #以下為$@的輸出
config.conf
-n
10
所以,手工處理的方式即對這些變量的處理。因為手工處理高度依賴于你在命令行上所傳參數的位置,所以一般都只用來處理較簡單的參數。
(腳本學堂 www.jb51.net 編輯整理)
例如:
./test.sh 10
而很少使用./test -n 10這種帶選項的方式。 典型用法為:

代碼如下:
#!/bin/bash
if [ x$1 != x ]
then
    #...有參數
else
then
    #...沒有參數
fi

為什么要使用 x$1 != x 這種方式來比較呢?想像一下這種方式比較:
if [ -n $1 ]  #$1不為空
但如果用戶不傳參數的時候,$1為空,這時 就會變成 [ -n ] ,所以需要加一個輔助字符串來進行比較。
手工處理方式能滿足大多數的簡單需求,配合shift使用也能構造出強大的功能,但在要處理復雜選項的時候建議用下面的兩種方法。

2. getopts/getopt
處理命令行參數是一個相似而又復雜的事情,為此,c提供了getopt/getopt_long等函數,
c++的boost提供了options庫,在shell中,處理此事的是getopts和getopt.
getopts和getopt功能相似但又不完全相同,其中getopt是獨立的可執行文件,而getopts是由bash內置的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
26uuu日韩精品一区二区| 国自产精品手机在线观看视频| 欧美激情精品久久久久久蜜臀| 欧美性videos高清精品| 欧美极品少妇xxxxⅹ免费视频| 欧美日韩一区二区精品| 91国内精品久久| 久久99热精品这里久久精品| 欧美成人午夜激情视频| 亚洲免费伊人电影在线观看av| 国产美女91呻吟求| 日韩精品在线视频观看| 亚洲精品少妇网址| zzijzzij亚洲日本成熟少妇| 日韩av免费在线| 国产成人综合精品在线| 久久大大胆人体| 久久久久久久999| 欧美激情在线有限公司| 欧美xxxx18国产| 日韩视频免费在线| 国产欧美亚洲精品| 亚洲激情视频在线| 国产热re99久久6国产精品| 精品国产一区二区三区在线观看| 国产亚洲欧美视频| 国产精品久久久久久一区二区| 深夜精品寂寞黄网站在线观看| 成人高h视频在线| 久久精品国产亚洲精品2020| wwwwwwww亚洲| 国产在线视频欧美| 成人午夜在线影院| 中文精品99久久国产香蕉| 久久亚洲精品一区| 精品国产鲁一鲁一区二区张丽| 日韩av免费在线看| 欧美日韩在线视频一区二区| 日韩一区二区三区xxxx| 久久久亚洲成人| 欧美日在线观看| 亚洲国产精品嫩草影院久久| 91精品在线一区| 国产精品成人在线| 欧美—级高清免费播放| 中文字幕亚洲一区| 亚洲天堂成人在线视频| 精品久久久久久中文字幕一区奶水| 国内精品久久久久久久久| 国内成人精品一区| 狠狠操狠狠色综合网| 粗暴蹂躏中文一区二区三区| 91在线高清视频| 亚洲精品在线91| 国产日韩精品在线观看| 国产精品九九九| 亚洲色图欧美制服丝袜另类第一页| 亚洲激情视频在线观看| 欧美剧在线观看| 国产精品成人免费视频| 亚洲区在线播放| 一本一本久久a久久精品综合小说| 日本一欧美一欧美一亚洲视频| 国模精品视频一区二区| 亚洲高清久久网| 成人中文字幕+乱码+中文字幕| 91精品国产色综合久久不卡98| 国产精品av电影| 精品中文字幕在线| 日韩av成人在线观看| 亚洲精品国产综合区久久久久久久| 亚洲一区二区三区在线视频| 亚洲人午夜精品免费| 成人激情在线观看| 97精品伊人久久久大香线蕉| 2021国产精品视频| 亚洲中国色老太| 日韩美女在线观看| 国产精品美女久久久久久免费| 精品伊人久久97| 亚洲a∨日韩av高清在线观看| 国产精品久久久久久久app| 亚洲黄页视频免费观看| 国产精品久久久久久av| 精品欧美国产一区二区三区| 亚洲成年人在线| 国产噜噜噜噜久久久久久久久| 久久久久在线观看| 国产一区二区三区高清在线观看| 日韩欧美国产网站| 亚洲精品美女网站| 成人春色激情网| 九九久久久久久久久激情| 国产精品99久久久久久www| 在线成人中文字幕| 国产精品免费看久久久香蕉| 日韩成人在线电影网| 国产精品久久久久久久久久| 欧美大胆在线视频| 亚洲精品v天堂中文字幕| 欧美性猛交xxxx乱大交极品| 日韩成人免费视频| 欧美疯狂做受xxxx高潮| 国产精品成人va在线观看| 日韩高清av一区二区三区| 色中色综合影院手机版在线观看| 亚洲一区二区三区毛片| 国语自产精品视频在线看抢先版图片| 81精品国产乱码久久久久久| 欧美日韩一区二区在线播放| 久久久精品免费视频| 欧美大成色www永久网站婷| 色婷婷久久av| 7777精品久久久久久| 欧美激情视频一区二区三区不卡| 亚洲女人天堂成人av在线| 欧美另类极品videosbestfree| 亚洲一区二区免费在线| 日本精品视频网站| 疯狂做受xxxx高潮欧美日本| 久久高清视频免费| 91精品久久久久久久久久久| 欧美黑人性生活视频| 91精品国产综合久久久久久蜜臀| 日韩欧美中文第一页| 亚洲成人网在线观看| 中文字幕最新精品| 亚洲男人av电影| 久久伊人精品天天| 欧美老肥婆性猛交视频| 日韩美女免费观看| 亚洲一区二区免费在线| 日韩高清不卡av| 欧美xxxwww| 久久精品国产亚洲精品| 亚洲国产婷婷香蕉久久久久久| 怡红院精品视频| 国产精品无码专区在线观看| 国产精品白丝av嫩草影院| 曰本色欧美视频在线| 亚洲区一区二区| 欧美国产高跟鞋裸体秀xxxhd| 亚洲一区二区三区乱码aⅴ| 在线精品视频视频中文字幕| 日韩有码在线观看| 久久大大胆人体| 亚洲精品wwww| 久久视频这里只有精品| 国产欧亚日韩视频| 亚洲美女自拍视频| 欧美影院成年免费版| 国产精品三级久久久久久电影| 久久欧美在线电影| 亚洲欧美激情精品一区二区| 久久免费国产视频| 中日韩美女免费视频网站在线观看| 97视频免费看| 国产精品第一第二| 亚洲欧美激情另类校园| 色噜噜狠狠色综合网图区| 国产ts一区二区| 国产精品露脸自拍| 91在线免费观看网站| 欧美电影在线免费观看网站|