2014-09-22 38 views
0

我該如何做這項工作?我想爲我的命令使用不同的函數,我的問題是如何將參數傳遞給add.sh函數? find.sh工作正常,但前兩個命令表示沒有參數-v/-a選項。我究竟做錯了什麼?不同功能的bash getopts選項

while getopts v:a:s opt 
do 
case "$opt" in 

v) ./view.sh;; 

a) ./add.sh;; 

s) ./find.sh;; 
+0

究竟是什麼問題?你已經告訴'getopts','-v'和'-a'選項需要參數。你是否將參數傳遞給該腳本?如果你這樣做,你不應該從'getopts'中得到一個錯誤。您似乎也在問如何將該參數(或其他參數?)傳遞給被調用的函數。這是兩個非常不同的問題。第一部分是通過閱讀'getopts'如何工作來回答的。第二個是在你組裝完所有參數之前不運行腳本來回答的。 – 2014-09-22 01:38:47

+0

我試圖將參數傳遞給-v和-a腳本,我不確定腳本是否正確接收參數,繼承人view.sh的腳本 (awk -F「;」' {printf「記錄:%d \ n \ t%s \ n \ t%s \ n \ t%s,%s,%s \ n \ t%s \ n =========== =============== \ n \ n「,NR,$ 1,$ 2,$ 3,$ 4,$ 5,$ 6}'$ BOOK; echo」按Q退出並返回菜單。「)| less – user3632739 2014-09-22 01:44:58

+0

我確實有一個腳本腳本,我可以運行所有腳本,但是我正努力應付getops。我有toplevel.sh腳本來運行所有其他腳本,現在我正在嘗試爲getops創建另一個腳本,我將其設置爲,當沒有提供參數時,getops腳本會自動打開頂層腳本。我仍然在努力學習它。感謝您的幫助先生 – user3632739 2014-09-22 01:46:58

回答

1

如果你想在-v選項傳遞到view.sh腳本,那麼這樣做:

while getopts v:a:s opt 
do 
    case "$opt" in 
    v) ./view.sh -v "$OPTARG";; 
    a) ./add.sh -a "$OPTARG";; 
    s) ./find.sh;; 
    esac 
done 

如果你想在「其他」參數傳遞給view.sh過,那麼你必須工作有點困難。你可以簡單地通過所有的參數./view.sh "[email protected]";;但選擇性更難。