如何使用字符串变量作为运算符?

我想使用字符串作为运算符:

if [[ "$show_output" = "yes" ]]; then
    redirect_cmd_str=' 2>&1 | tee -a'
else
    redirect_cmd_str=' &>>'
fi
$my_command $redirect_cmd_str $my_log

是否可以在 shell/bash 中使用?

回答

Shell 语法不支持这种用法。有可能实现,eval但我建议你避免eval. 使用它是一个坏习惯,很容易导致可利用的漏洞。从安全角度来看,eval安全使用非常非常棘手。

不是将代码存储在变量中,更好的工作工具是函数

maybe_show() {
    if [[ $show_output = yes ]]; then
        "$@" 2>&1 | tee -a "$my_log"
    else
        "$@" &>> "$my_log"
    fi
}

然后你只需在任何命令前面加上函数名:

maybe_show my_command arg1 arg2 arg3

$my_command也不应该是一个变量。如果它做一些动态的事情,它也可以是一个函数。)


以上是如何使用字符串变量作为运算符?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>