執(zhí)行l(wèi)inux的系統(tǒng)命令可以接不通的參數(shù)辫狼,比如 rm -rf test
,自己編寫(xiě)的腳本在被人調(diào)用時(shí)辛润,怎么能提供更多參數(shù)選項(xiàng)實(shí)現(xiàn)更豐富的功能呢膨处,怎么能讓使用者-r -f
,甚至是-ip 192.168.0.1
呢砂竖?這些參數(shù)選項(xiàng)如何解析真椿?
手工解析
主要用到了shift命令,shift的作用是將輸入?yún)?shù)以空格為分割單位左移一個(gè)單位乎澄,即將最前邊的第一個(gè)參數(shù)去掉突硝,第二個(gè)變成第一個(gè)
#!/bin/bash
until [ -z "$1" ]
do
case $1 in
-path)
shift;path=$1;echo $path;shift
;;
-ip)
shift;ip=$1;echo $ip;shift
;;
-paasword)
shift;paasword=$1;echo $paasword;shift
;;
*)
echo "------"
exit 1
;;
esac
done
echo "end"
執(zhí)行上述腳本,輸入?yún)?shù)-path /opt -ip 192.168.0.1
置济,輸入如下:
/opt
192.168.0.1
end
getopts和getopt
'getopts'是POSIX Shell中的內(nèi)置命令解恰,其使用方法是:
getopts <opt_string> <optvar> <arguments>
'getopt'相對(duì)于'getopts'更強(qiáng)大,能處理短選項(xiàng)和長(zhǎng)選項(xiàng)浙于,但是不是Shell內(nèi)建的命令护盈,而是'util-linux'這個(gè)軟件包提供的功能,它不是POSIX標(biāo)準(zhǔn)的一部分路媚,所以也有人建議不使用'getopt'
因?yàn)闆](méi)有在項(xiàng)目中具體用過(guò)黄琼,就不細(xì)聊了樊销,先占個(gè)坑整慎,知道有這個(gè)玩意,想詳細(xì)了解的围苫,請(qǐng)參考這里
Refenence:
https://liam0205.me/2016/11/11/ways-to-parse-arguments-in-shell-script/
http://www.zmonster.me/2014/08/09/pare-arguments-in-shell-function.html