我想将 bash 字符串比较的结果存储在一个变量中,效果相当于:
if [[ $a == $b ]]; then
res=1
else
res=0
fi
我希望能够写一些更简洁的东西,比如:
res2=$('$a'=='$b') #Not valid bash
有没有一种方法可以实现我想要的,而无需遵循 if 构造?
我想将 bash 字符串比较的结果存储在一个变量中,效果相当于:
if [[ $a == $b ]]; then
res=1
else
res=0
fi
我希望能够写一些更简洁的东西,比如:
res2=$('$a'=='$b') #Not valid bash
有没有一种方法可以实现我想要的,而无需遵循 if 构造?
我会建议:
res=0; [ "$a" == "$b" ] && res=1
或者
res=1; [ "$a" == "$b" ] || res=0
不像您希望的那么简单,但确实避免了if ... else ... fi
.
您还可以使用$?
包含上一个命令的返回值的变量:
res="$( [[ $a == $b ]]; echo $? )"
尽管这会与您给出的数字相反。最终结果将与以下内容相同:
if [[ $a == $b ]]; then
res=0
else
res=1
fi
这是因为 shell 将返回值解释0
为 true 和1
false。
并不是说我也完全赞成这种解决方案。这是hackish,有点不清楚。但它很简洁,简洁就是你所要求的。
这是另一种选择。
$> test "foo" = "bar"; res=$?
$> echo $res
1
$> test "foo" = "foo"; res=$?
$> echo $res
0