2017-10-17 62 views
0

我正在嘗試創建一個bash腳本,它允許用戶同時使用菜單樣式和命令行切換樣式界面。我想知道是否有辦法將參數傳遞給select中的菜單選項,就好像它只是一個腳本的參數。例如,在我的腳本中,我可以通過說junk -d file.txt指定一個文件移動到我的垃圾文件夾。但是如果用戶沒有指定任何參數,它應該使用select選項。即1) move file 2) clear junk folder 3) watch folder如何通過在bash中選擇傳遞參數

在這個菜單上,我希望能夠編寫該選項,然後發送一個參數到該選項。像1 filetobemoved.txt。我試過在菜單調用的方法後放$OPTARG,但這似乎不起作用。

下面是我目前菜單中的代碼,我試圖調用recover方法並將參數(文件名)傳遞給它。

if (($# == 0)) 
then if (($OPTIND == 1)) 
then select menu_list in list recover delete total watch kill exit 
    do case $menu_list in 
    "list") list;; 
    "recover") recover $GETOPT;; 
    "delete") delete;; 
    "total") total;; 
    "watch") _watch;; 
    "kill") _kill;; 
    "exit") exit 0;; 
    *) echo "unknown option";; 
    esac 
    done 
fi 

感謝您的任何幫助。

回答

0

將執行個案的代碼放入函數中。然後你可以檢查命令行選項並跳過select,然後調用該函數。

do_command() { 
    case "$1" in 
    "list") list;; 
    "recover") recover $GETOPT;; # had -a after recover 
    "delete") delete;; 
    "total") total;; 
    "watch") _watch;; 
    "kill") _kill;; 
    "exit") exit 0;; 
    *) echo "unknown option";; 
    esac 
} 
if (($# == 0)) 
then if (($OPTIND == 1)) 
    then select menu_list in list recover delete total watch kill exit 
     do do_command "$menu_list" 
     done 
    fi 
elif [[ "$1" = "-d" ]] 
then do_command delete 
... 
fi