这是我的代码
#! /bin/bash
read var
if [ $var="Y" -o $var="y" ]
then
echo "YES"
else
echo "NO"
fi
Run Code Online (Sandbox Code Playgroud)
如果用户按y或Y我想打印YES,否则我想打印NO.为什么这段代码不起作用?
基本上,你的条件是错误的.引用你的变量并在运算符之间留空格(如shellter写的).所以看起来应该是这样的:
#! /bin/bash
read var
if [ "$var" = "Y" ] || [ "$var" = "y" ]
then
echo "YES"
else
echo "NO"
fi
Run Code Online (Sandbox Code Playgroud)
编辑:用于POSIX兼容性
==为=- 见评论-o用||语法替换语法- 请参阅注释使用 Bash,您还可以在测试中使用正则表达式和运算=~符:
read var
[[ "$var" =~ [Yy] ]] && echo "YES" || echo "NO"
Run Code Online (Sandbox Code Playgroud)
或者正如 Benjamin W. 提到的,只需将字符范围与==运算符一起使用:
read var
[[ "$var" == [Yy] ]] && echo "YES" || echo "NO"
Run Code Online (Sandbox Code Playgroud)