比较运算符Bash
是否可以从bash中的比较中收集“True或False”?不使用“如果” 示例(让我用另一种语言编写) 如果可能的话,在bash中是如何实现的 已解决比较运算符Bash,bash,comparison,comparison-operators,Bash,Comparison,Comparison Operators,是否可以从bash中的比较中收集“True或False”?不使用“如果” 示例(让我用另一种语言编写) 如果可能的话,在bash中是如何实现的 已解决 x=1 y=1 [[ $x -eq $y ]] && z=true || z=false echo $z #Returns true 谢谢&您只需使用测试,如果,则无需使用: x=1 y=1 [ $"{x}" -eq $"{y}" ] && echo "True" || echo "False" 这里,如果xe
x=1
y=1
[[ $x -eq $y ]] && z=true || z=false
echo $z #Returns true
谢谢&您只需使用
测试
,如果,则无需使用:
x=1
y=1
[ $"{x}" -eq $"{y}" ] && echo "True" || echo "False"
这里,如果x
equaly
,则逻辑AND(&&
)起作用,脚本回显“True”
如果x
不等于,则逻辑OR(
| | `)起作用,脚本回显“False”
Upd。通过@advice,另一个可用的解决方案:
(( $"x" == $"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包装到函数中:
你为什么用$“{x}”
而不是“$x”
?@M.Becerra这是一种习惯。在这种情况下,我们不需要{}
,但当您在代码中这样做时,它很有用:echo“只是示例${filename}.tar.gz
,因此bash知道我的变量名为filename
,而不是filename.tar.gz
,因为OP对bash
解决方案感兴趣,也许还值得一提纯算术测试,((x==y))和&echo True | | echo False
,以及[$x-eq$y]]
,无需报价。谢谢
[[ $"a" == $"y" ]] && echo True || echo 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
#!/bin/sh
bool_eq() {
if test "$1" -eq "$2"; 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