如何在Bash中循环If语句
这是我的密码:如何在Bash中循环If语句,bash,loops,if-statement,prompt,Bash,Loops,If Statement,Prompt,这是我的密码: #!/bin/bash echo "Letter:" read a if [ $a = "a" ] then echo "LOL" fi if [ $a = "b" ] then echo "ROFL" fi 是否有一种方法可以让我循环使用,这样在显示LOL或ROFL后,我会再次被要求写信?是的 哦,你想知道怎么做吗 while true; do echo "Letter:" read a if [ $a = "a" ] then
#!/bin/bash
echo "Letter:"
read a
if [ $a = "a" ]
then
echo "LOL"
fi
if [ $a = "b" ]
then
echo "ROFL"
fi
是否有一种方法可以让我循环使用,这样在显示LOL
或ROFL
后,我会再次被要求写信?是的
哦,你想知道怎么做吗
while true; do
echo "Letter:"
read a
if [ $a = "a" ]
then
echo "LOL"
elif [ $a = "b" ]
then
echo "ROFL"
fi
done
当然,你可能想要一些方法来摆脱这个无限循环。在这种情况下运行的命令是break
。我会这样写整件事:
while read -p Letter: a; do
case "$a" in
a) echo LOL;;
b) echo ROFL;;
q) break;;
esac
done
它允许您通过输入“q”或生成文件结尾(control-D)退出循环。您总是想要-r
读取标志。该行上还有一个引用错误:
if [ $a = "a" ] # this will fail if a='*'
所以这里有一个更好的版本(我还限制用户只输入1个字符):
或使用switch语句:
#!/bin/bash
while read -rn1 -p 'Letter: ' a; do
echo
case $a in
a) echo LOL;;
b) echo ROFL;;
*) break;;
esac
done
#!/bin/bash
while read -rn1 -p 'Letter: ' a; do
echo
case $a in
a) echo LOL;;
b) echo ROFL;;
*) break;;
esac
done