【发布时间】:2020-05-20 21:30:17
【问题描述】:
我的要求如下,
if cond1 is true; then
if [[ val1 -lt val2 ]]; then
call_x_func
call_y_func
call_z_func
fi
else
if [[ val1 != val2 ]]; then
call_x_func
call_y_func
call_z_func
fi
fi
从上面可以看出,如果 cond1 为真,则使用 operator -lt 或使用 !=。循环内的内容保持不变。为了实现这一点,我试图在下面做,但无法将 bool 值分配给 bash 变量。最好的方法是什么?
need_change=false
if cond1; then
need_change=[[ val1 -lt val2 ]]
else
need_change=[[ val1 != val2 ]]
fi
if $need_change; then
call_x_func
call_y_func
call_z_func
fi
【问题讨论】:
-
bash 中的 false 表示未设置。您可以使用 ((need_change)) 来检查它是否为真(或设置)
-
小于和不等于总是会给你错误的,是吗?至少在 bash 中
-
另外,无论测试结果如何,您都在调用相同顺序的函数...
-
您不能将
[[ ... ]]分配给参数;这是一个命令,而不是一个值。
标签: bash variables boolean boolean-logic