Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 选择多个重复或退出的Shell脚本_Linux_Shell_Select_Terminal_Case - Fatal编程技术网

Linux 选择多个重复或退出的Shell脚本

Linux 选择多个重复或退出的Shell脚本,linux,shell,select,terminal,case,Linux,Shell,Select,Terminal,Case,我有以下代码: echo "Select" select yn in "YES" "NO"; do case $yn in YES ) break;; NO ) exit;; esac done 我试图做的是询问用户一些事情(选择),如果用户键入YES,则执行YES操作(中断),如果用户键入NO,则执行NO操作(退出) 我该怎么做呢?我不知道你想实现什么,但如果你想让菜单重复多次,请删除中断,这样它就会循环。如果你想让用户能够键入文字“是”,而不是数字“1”,并让它执行,你需要捕捉回复并将其考

我有以下代码:

echo "Select"
select yn in "YES" "NO"; do
case $yn in
YES ) break;;
NO ) exit;;
esac
done
我试图做的是询问用户一些事情(
选择),如果用户键入YES,则执行YES操作(
中断
),如果用户键入NO,则执行NO操作(
退出

我该怎么做呢?

我不知道你想实现什么,但如果你想让菜单重复多次,请删除中断,这样它就会循环。如果你想让用户能够键入文字“是”,而不是数字“1”,并让它执行,你需要捕捉回复并将其考虑在内

所以。。。要将这两者结合起来,请尝试以下脚本:

#!/bin/bash
repeat() {
        echo "Repeating";
}
end() {
        echo "Exit";
        exit;
}
echo "Select"
select yn in "YES" "NO"; do
        if [[ -z "$yn" ]]; then
                # user entered text instead of the number
                yn="$REPLY"
        fi
        case $yn in
                YES )
                repeat
                ;;
                NO )
                end
                ;;
                * )
                echo -e "Sorry, \"${yn}\" is not supported.\nTry again."
                ;;
        esac
done

我试过了,它说:Select proba1.sh:10:proba1.sh:Select:not found proba1.sh:11:proba1.sh:[[:not found-e Sorry],“不受支持。请重试。proba1.sh:26:proba1.sh:语法错误:“完成”出乎意料的奇怪,你运行的是哪个版本的bash?我把它复制粘贴到bsd和linux上的一个脚本中,然后它就工作了。也许那里的新行有点奇怪,试着从那里得到它,第10行的选择与你的脚本中的相同。GNU bash,版本4.3.11(1)-发布(x86_64-pc-linux-GNU)您试图解决的问题是什么?是重复还是可以输入文本?顺便说一句,我就是这样测试的,不确定您的方法是否不同: