我想在变量中存储bash字符串比较的结果,效果等同于:
if [[ $a == $b ]]; then
res=1
else
res=0
fi
Run Code Online (Sandbox Code Playgroud)
我希望能够写出一些更简洁的东西,比如:
res2=$('$a'=='$b') #Not valid bash
Run Code Online (Sandbox Code Playgroud)
有没有办法实现我想要的,而不是推迟if构造?
twa*_*erg 15
我建议:
res=0; [ "$a" == "$b" ] && res=1
Run Code Online (Sandbox Code Playgroud)
要么
res=1; [ "$a" == "$b" ] || res=0
Run Code Online (Sandbox Code Playgroud)
不像你希望的那么简单,但确实避免了if ... else ... fi
.
您还可以使用$?
包含上一个命令的返回值的变量:
res="$( [[ $a == $b ]]; echo $? )"
Run Code Online (Sandbox Code Playgroud)
尽管这会颠倒您给出的数字。最终结果将与以下相同:
if [[ $a == $b ]]; then
res=0
else
res=1
fi
Run Code Online (Sandbox Code Playgroud)
这是因为 shell 将返回值解释0
为 true 和1
false。
也不是说我完全赞成这种解决方案。这是很黑客的而且有点不清楚。但它很简洁,而且简洁正是您所要求的。
归档时间: |
|
查看次数: |
3230 次 |
最近记录: |