在 bash 脚本中使用 while 循环检查两个条件
checking two conditions using while loop in bash script
我想检查用户是否没有输入 'y' 或 'n',如果没有,则继续循环询问用户输入正确的字母,但它不起作用...下面的代码显示了我到目前为止所做的尝试....有人可以帮我吗???
echo "Enter 'y' to exit or 'n' to continue"
echo -n "Do you want to exit? "
read character
while [ "$character" != "y" || "$character" != "n" ];
do
echo -n "Wrong key re-enter 'y' to exit or 'n' to continue"
read character
done
你可以:
while [[ $(read -sn1 character; echo ${character^^}) =~ [^YN] ]]; do
echo -n "Wrong key ..."
done
- 你需要 -s 除非你想要回显密钥
- 您需要 -n1 将输入限制为一个字符
- 您还可以通过 $? 检查是否按下了 ctrl+c 和 ctrl+d (ctrl-d 为 1,ctrl+c 为 130,但 ctrl+d 捕获仅在包含 -e 标志并使用 readline 时有效)
- 如果你愿意,你也可以在其中包含一个提示,而且,你不必使用“$character”,你可以什么都不给它,然后检查 $REPLY
- 如果你真的不想按 ctrl+c 可以考虑使用陷阱
非常感谢你们所有人...经过良好的坚持和韧性,我终于找到了我正在寻找的答案...A 发布了以下代码:
#if the user's input is not Y or N
while [[ $(read -sn1; echo ${character^^}) =~ [^YN] ]];
do
echo -n "Re-enter 'y' to exit or 'n'to continue: ?"
read character
done
这种方法试图考虑到更多的用户可能性并仍然完成同样的事情。
#if the user's input is not Y or N, Yes or No, y or n, yes or no
while [[ ! "$character" =~ ^([yY][eE][sS]|[yY])$ ]] && [[ ! "$character" =~ ^([nN][oO]|[nN])$ ]]
do
echo -n "Wrong key re-enter 'y' to exit or 'n' to continue"
read character
done
我想检查用户是否没有输入 'y' 或 'n',如果没有,则继续循环询问用户输入正确的字母,但它不起作用...下面的代码显示了我到目前为止所做的尝试....有人可以帮我吗???
echo "Enter 'y' to exit or 'n' to continue"
echo -n "Do you want to exit? "
read character
while [ "$character" != "y" || "$character" != "n" ];
do
echo -n "Wrong key re-enter 'y' to exit or 'n' to continue"
read character
done
你可以:
while [[ $(read -sn1 character; echo ${character^^}) =~ [^YN] ]]; do
echo -n "Wrong key ..."
done
- 你需要 -s 除非你想要回显密钥
- 您需要 -n1 将输入限制为一个字符
- 您还可以通过 $? 检查是否按下了 ctrl+c 和 ctrl+d (ctrl-d 为 1,ctrl+c 为 130,但 ctrl+d 捕获仅在包含 -e 标志并使用 readline 时有效)
- 如果你愿意,你也可以在其中包含一个提示,而且,你不必使用“$character”,你可以什么都不给它,然后检查 $REPLY
- 如果你真的不想按 ctrl+c 可以考虑使用陷阱
非常感谢你们所有人...经过良好的坚持和韧性,我终于找到了我正在寻找的答案...A 发布了以下代码:
#if the user's input is not Y or N
while [[ $(read -sn1; echo ${character^^}) =~ [^YN] ]];
do
echo -n "Re-enter 'y' to exit or 'n'to continue: ?"
read character
done
这种方法试图考虑到更多的用户可能性并仍然完成同样的事情。
#if the user's input is not Y or N, Yes or No, y or n, yes or no
while [[ ! "$character" =~ ^([yY][eE][sS]|[yY])$ ]] && [[ ! "$character" =~ ^([nN][oO]|[nN])$ ]]
do
echo -n "Wrong key re-enter 'y' to exit or 'n' to continue"
read character
done