比较运算符 Bash
Comparison operators Bash
是否可以从 bash 中的比较中收集 "True or False"?不使用 "if".
示例(让我用另一种语言制作)
x = 1
y = 1
z = x == y
print(z) #Returns true
如果可以的话bash怎么样?
已解决
x=1
y=1
[[ $x -eq $y ]] && z=true || z=false
echo $z #Returns true
你可以只使用 test
,不用 if
:
x=1
y=1
[ $"{x}" -eq $"{y}" ] && echo "True" || echo "False"
此处,如果 x
等于 y
,则逻辑与 (&&
) 起作用,并且脚本 echo "True".
如果 x
不等于 , logical OR (
||`) 有效,脚本 echo "False".
更新。通过@randomir的建议,另一种可用的解决方案:
(( $"x" == $"y" )) && echo True || echo False
或者:
[[ $"a" == $"y" ]] && echo True || echo False
当您将 true
或 false
存储在变量中时,您可以直接在条件中使用它:
#!/bin/sh
X=1
Y=1
if test "$X" -eq "$Y"; then Z=true; else Z=false; fi
echo "Z is $Z"
# you can just use Z here
if "$Z"; then do_ something; fi
没有直接产生布尔值的表达式,但如果您真的想要(未经测试),您可以将 if/else 包装在一个函数中:
#!/bin/sh
bool_eq() {
if test "" -eq ""; then echo true; else echo false; fi
}
X=1
Y=1
Z="$(bool_eq "$X" "$Y")"
echo "Z is $Z"
# you can just use Z here
if "$Z"; then do_ something; fi
是否可以从 bash 中的比较中收集 "True or False"?不使用 "if".
示例(让我用另一种语言制作)
x = 1
y = 1
z = x == y
print(z) #Returns true
如果可以的话bash怎么样?
已解决
x=1
y=1
[[ $x -eq $y ]] && z=true || z=false
echo $z #Returns true
你可以只使用 test
,不用 if
:
x=1
y=1
[ $"{x}" -eq $"{y}" ] && echo "True" || echo "False"
此处,如果 x
等于 y
,则逻辑与 (&&
) 起作用,并且脚本 echo "True".
如果 x
不等于 , logical OR (
||`) 有效,脚本 echo "False".
更新。通过@randomir的建议,另一种可用的解决方案:
(( $"x" == $"y" )) && echo True || echo False
或者:
[[ $"a" == $"y" ]] && echo True || echo False
当您将 true
或 false
存储在变量中时,您可以直接在条件中使用它:
#!/bin/sh
X=1
Y=1
if test "$X" -eq "$Y"; then Z=true; else Z=false; fi
echo "Z is $Z"
# you can just use Z here
if "$Z"; then do_ something; fi
没有直接产生布尔值的表达式,但如果您真的想要(未经测试),您可以将 if/else 包装在一个函数中:
#!/bin/sh
bool_eq() {
if test "" -eq ""; then echo true; else echo false; fi
}
X=1
Y=1
Z="$(bool_eq "$X" "$Y")"
echo "Z is $Z"
# you can just use Z here
if "$Z"; then do_ something; fi