Bash 菜单问题/疑问?

Bash 菜单问题/疑问?

此主题还有另一个主题,但已关闭。我想重新查看。我正在尝试为自己编写一个实用脚本。但是我不是程序员,所以我想得到一些反馈。虽然我很感谢其他人的帮助,但我不想离题太远,不得不阅读一堆东西。我的需求非常具体。

PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option3" "Quit")
select opt in "${options[@]}"
do
    case $opt in


 if [ "$RESP" = "y" ]; then
                action here
        else
                echo "Thank you."
        sleep 2
    exit;  
fi

;;
        "Option 2")
            echo "you chose choice 2"
            ;;
        "Option 3")
            echo "you chose choice 3"
            ;;
        "Quit")
            break
            ;;
        *) echo invalid option;;
    esac
done

我如何从退出;或 fi 返回菜单?

非常感谢,

答案1

"Option 1")首先,你的 之前少了一个案例if。并且"Option3"你的选项列表中缺少一个空格:应该是"Option 3"

除此之外,我真的不明白你的问题。问题是什么?一旦修复了这些问题,它似乎对我有用。下面是一次测试运行。澄清一下,exit退出脚本并将用户返回到他们的 shell 提示符。如果你想留在脚本中,请不要使用exit

ace@ace2:~$ ./test.sh
1) Option 1
2) Option 2
3) Option 3
4) Quit
Please enter your choice: 1
Thank you.
ace@ace2:~$ RESP="y" ./test.sh
1) Option 1
2) Option 2
3) Option3
4) Quit
Please enter your choice: 1
you chose choice 1
Please enter your choice: 2
you chose choice 2
Please enter your choice: 3
you chose choice 3
Please enter your choice: 4
ace@ace2:~$

以下是代码:

#!/bin/bash
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option 3" "Quit")
select opt in "${options[@]}"
do
    case $opt in

    "Option 1")
        if [ "$RESP" = "y" ]; then
            echo "you chose choice 1"
        else
            echo "Thank you."
            sleep 2
            exit
        fi
        ;;
    "Option 2")
        echo "you chose choice 2"
        ;;
    "Option 3")
        echo "you chose choice 3"
        ;;
    "Quit")
        break
        ;;
    *) 
        echo invalid option
        ;;
    esac
done

相关内容