比较运算符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

是否可以从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"
这里,如果
x
equal
y
,则逻辑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