bsm*_*moo 5 linux bash shell ubuntu if-statement
试图编写一个脚本来读取用户输入的内容......我知道这是基本的但我坚持第一个如果......
echo "Please enter yes or no (y/n)?"
read string
if [ $string = "y" -o "n" ]
then
echo "User selected $string"
else
echo "You didn't enter y/n !!!"
fi
Run Code Online (Sandbox Code Playgroud)
如果 [ $backup = "y" 或 "n" ]
有任何想法吗?
在 中使用此语法bash:
if [ "a string" = "another one" ] ; then
# Whatever
fi
Run Code Online (Sandbox Code Playgroud)
对于多个条件语句,例如OR,请使用:
if [ "a string" = "another one" ] || [ "$foo" = "bar" ] ; then
# Whatever
fi
Run Code Online (Sandbox Code Playgroud)
bash还支持非标准[[ ... ]]表达式,它可以使用单个命令而不是 2 个[命令处理复合比较:
if [[ "a string" = "another one" || $foo = "bar" ]]; then
# Whatever
fi
Run Code Online (Sandbox Code Playgroud)
不是您实际问的问题,但是...您告诉用户输入“是”或“否”,但仅测试 y 或 n - 当然,您给了他们提示,但用户对提示有抵抗力。因此,也许需要进行更宽松的测试:
echo "Please enter yes or no (y/n)"
read string
case "$string" in
[yY]* | [nN]*) echo "User entered $string" ;;
*) echo "I don't understand '$string'" ;;
esac
Run Code Online (Sandbox Code Playgroud)
这将识别以 Y 或 N 开头的任何变化 - 通常这已经足够好了,但您可以收紧测试。另外,由于您可能想要做一些不同的事情,回答是或否,您可以扩展案例(我还加强了这一测试):
case "$string" in
[yY] | [yY][eE][sS]) echo "Here's where you process yes" ;;
[nN] | [nN][oO]) echo "And here you deal with no" ;;
*) echo "I don't understand '$string'" ;;
esac
Run Code Online (Sandbox Code Playgroud)
您可以使用 if 语句来执行此操作,但我发现当可能有两个以上的替代方案并且测试适合 case 语法时, case 更具可读性。
| 归档时间: |
|
| 查看次数: |
15462 次 |
| 最近记录: |