这是我的代码:
#!/bin/bash
echo "Letter:"
read a
if [ $a = "a" ]
then
echo "LOL"
fi
if [ $a = "b" ]
then
echo "ROFL"
fi
有没有办法让我循环播放,以便在显示LOL
或ROFL
后,我会再次被要求回信?
答案 0 :(得分:2)
是
哦,你想知道怎么做?
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)来退出循环。
答案 1 :(得分:1)
Don't forget 始终希望-r
标记为已阅读
此行还有一个引用错误:
if [ $a = "a" ] # this will fail if a='*'
所以这里有一个更好的版本(我也限制用户只输入1个字符):
#!/bin/bash
while true; do
read -rn1 -p 'Letter: ' a
echo
if [[ $a = 'a' ]]; then
echo "LOL"
elif [[ $a = 'b' ]]; then
echo "ROFL"
else
break
fi
done
或使用switch语句:
#!/bin/bash
while read -rn1 -p 'Letter: ' a; do
echo
case $a in
a) echo LOL;;
b) echo ROFL;;
*) break;;
esac
done