如何将布尔表达式条件赋值给shell中的变量

时间:2016-10-24 12:30:54

标签: linux shell

我想在shell脚本中执行以下操作。

根据编号分配变量CON_1。传递的参数,稍后我将在另一个条件

中使用此CON_1变量
if [ $# < 2 ];then
CON_1=([ $m = Online ])
else
CON_1=[ $m = Online -a ${#bld_stat} -gt 0 ]

根据CON_1变量值,我正在打印一条消息

if $CON_1; then

我不知道这是否可能在shell中,如果有可能,有人可以指导我这个。

1 个答案:

答案 0 :(得分:2)

您可以轻松地在变量中存储结果

[ $m = Online -a ${#bld_stat} -gt 0 ]
condition=$?

您也可以将条件的来源存储在变量中,但是您需要eval来运行它:

condition='[ $m = Online -a ${#bld_stat} -gt 0 ]'
eval "$condition"

如果没有eval,变量就不会被展开,因为变量扩展只发生一次。

使用函数

代替变量
condition () {
    [ $m = Online -a ${#bld_stat} -gt 0 ]
}
if condition ; then ...

您甚至可以将参数传递给函数:

condition () {
    [ $m = Online -a ${#bld_stat} -gt "$1" ]
}
if condition 12 ; then # Will use 12 instead of 0 to compare.