web-dev-qa-db-ja.com

ホイップテールと外部スクリプトの呼び出し

ホイップテールを使用して、メニュー項目が選択されたときに外部スクリプトを実行するツールボックスを作成したいと思います。

私は次のコードを持っています

#!/bin/bash

OPTION=$(whiptail --title "IT ToolBox v0.1" --menu "Choose your option" 15 60 4 \
"1" "Get users dropped from Active Directory" \
"2" "Work in progress" \
"3" "Work in progress" \
"4" "Work in progress"  3>&1 1>&2 2>&3)

exitstatus=$?
if [ $exitstatus = 0 ]; then
    echo "Your chosen option:" $OPTION
else
    echo "You chose Cancel."
fi

case $RETVAL in
    1) echo "Get users dropped from Active Directory"
    2) echo "Invalid option. Quitting";;
    3) echo "Invalid option. Quitting";;
    4) echo "Invalid option. Quitting";;
    *) echo "Invalid option. Quitting";;
esac

選択したときにファイルgudfad.shを実行するようにスクリプトに指示するにはどうすればよいですか?私の理解では、コマンドはケース領域に追加されます-例:

case $RETVAL in
    1) echo "Get users dropped from Active Directory"
       gudfad.sh;;
    2) echo "Invalid option. Quitting";;
    3) echo "Invalid option. Quitting";;
    4) echo "Invalid option. Quitting";;
    *) echo "Invalid option. Quitting";;
esac

ただし、これを実行してオプション1を選択すると、次のメッセージが表示されます。

Your chosen option: 1
Invalid option. Quitting
2
Aaran

ユーザーの選択は、OPTIONではなくRETVALにあります。

変化する:

case $RETVAL in

に:

case "$OPTION" in

bashスクリプトの先頭にset -uを追加すると、未定義の変数を使用したときに警告が表示されるようになります。

変数を常に引用することもお勧めします:"$var"ではなく$var。例外はありますが、まれです。

2
xhienne