鞭尾和调用外部脚本

鞭尾和调用外部脚本

我想使用whiptail 创建一个工具箱,在选择菜单项时运行外部脚本。

我有以下代码

#!/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 区域中——例如:

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

答案1

用户的选择是在OPTION,不是RETVAL

改变:

case $RETVAL in

到:

case "$OPTION" in

最好set -u在脚本顶部添加bash,这样当您使用未定义的变量时就会收到警告。

始终引用变量也很好:"$var",而不是$var。也有例外,但很少见。

相关内容