2012-06-23 98 views
1

我很新的shell腳本,我必須添加一個標誌(getopts)到我的腳本,我可以覆蓋下載url命令,如果腳本無法達到任何原因的網址。例如,如果我添加我的標誌,那麼它不會終止我的腳本,如果無法到達URL,我可以選擇繼續。標誌覆蓋下載url命令

目前,我有

if "$?" -ne "0" then 
echo "can't reach the url, n\ aborting" 
exit 

現在我需要通過getopts添加一個標誌,我可以選擇忽略"$?' - ne "0"命令,

我不知道getopts的是如何工作的,我非常新到它。有人可以幫助我如何去解決它嗎?

+0

請參閱此鏈接瞭解有關getopts的文檔:http://linux.about.com/library/cmd/blcmdl1_getopts.htm –

+0

@DexterHuinda:這只是[Bash'man'頁面的一部分](http:// tiswww .case.edu/PHP /切特/慶典/ bash.html#lbDB)。這是一個很好的參考:[BashFAQ/035](http://mywiki.wooledge.org/BashFAQ/035)。 –

回答

1

如果你只有一個選擇,有時它更簡單,只是檢查$1

# put download command here 
if (($? != 0)) && [[ $1 != -c ]]; then 
    echo -e "can't reach the url, \n aborting" 
    exit 
fi 
# put stuff to do if continuing here 

如果你打算接受其他選擇,有些可能與參數,getopts應使用:

#!/bin/bash 
usage() { echo "Here is how to use this program"; } 

cont=false 

# g and m require arguments, c and h do not, the initial colon is for silent error handling 
options=':cg:hm:' # additional option characters go here 
while getopts $options option 
do 
    case $option in 
     c ) cont=true;; 
     g ) echo "The argument for -g is $OPTARG"; g_option=$OPTARG;; #placeholder example 
     h ) usage; exit;; 
     m ) echo "The argument for -m is $OPTARG"; m_option=$OPTARG;; #placeholder example 
     # more option processing can go here 
     \?) echo "Unknown option: -$OPTARG" 
     : ) echo "Missing option argument for -$OPTARG";; 
     * ) echo "Unimplimented option: -$OPTARG";; 
    esac 
done 

shift $(($OPTIND - 1)) 

# put download command here 
if (($? != 0)) && ! $cont; then 
    echo -e "can't reach the url, \n aborting" 
    exit 
fi 
# put stuff to do if continuing here 
+0

所以在命令行中,我基本上輸入sh myscript.sh -c cont?請讓我知道 – user1477324

+0

不,只是'bash myscript.sh -c',或者如果您將腳本標記爲可執行文件('chmod u + x myscript.sh')並添加一個shebang('#!/ bin/bash')作爲第一行,然後你可以執行'./myscript.sh -c' –

+0

對不起,快速的問題,這個命令會做什麼?如果(($?!= 0))&&!續;然後 echo -e「無法到達URL,\ n正在中止」 退出 fi – user1477324