我想在随后的比较中使用比较结果.我正在尝试做类似的事情:
# $1 - expected result
# $2 - actual result
function print_result() {
if [[ [[ $1 -eq 0 ]] -eq [[ $2 -eq 0 ]] ]]; then # invalid
echo "Pass"
else
echo "Fail"
fi
}
我可以用更详细的形式获得所需的行为:
function print_result() {
if [[ (($1 -eq 0) && ($2 -eq 0)) || (($1 -ne 0) && ($2 -ne 0)) ]]; then
echo "Pass"
else
echo "Fail"
fi
}
解决方法:
你需要一些产生比较运算符结果的东西作为文本而不是状态返回.那将是arithmetic expansion:$((表达式)).
另请注意,bash包含数字conditional compound statement – ((expr)) – 这通常比非数字[[…]]条件复合语句更容易用于数值比较.
把它们放在一起,你要找的是:
if (( $(($1==0)) == $(($2==0)) )); then
要不就:
if (( ($1==0) == ($2==0) )); then
如果你只想知道$1和$2是否为零或两者都是非零,那么你可以使用boolean not(!)总是求值为0或1的事实.因此,下面更简单的表达式是等价的(但是见下面的警告):
if ((!$1 == !$2)); then
重要提示:如果您在脚本中使用它,它将正常工作,但在命令提示符下,您需要在!之后放置一个空格!避免它被解释为history expansion字符(除非你关闭历史记录扩展:如果你实际上没有使用历史记录扩展,关闭它并不是一个坏主意.)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。