我想使用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
。也有例外,但很少见。