Bash 如何使用字符串变量作为运算符?
我想使用字符串作为运算符:Bash 如何使用字符串变量作为运算符?,bash,shell,operators,Bash,Shell,Operators,我想使用字符串作为运算符: 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中是否可能?有评估解决方案: eval "$my_command
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中是否可能?有评估解决方案:
eval "$my_command $redirect_cmd_str $my_log"
但这并非如评论所示的最佳解决方案。有评估解决方案:
eval "$my_command $redirect_cmd_str $my_log"
但这并不是如评论所示的最佳解决方案。Shell语法不支持这种用法。可以通过
eval
实现,但我推荐您。使用它是一个坏习惯,很容易导致漏洞被利用。从安全角度来看,安全地使用eval
是非常非常棘手的
与将代码存储在变量中不同,更好的作业工具是函数:
然后,只需在任何命令前面加上函数名:
maybe_show my_command arg1 arg2 arg3
(
$my_command
也不应该是变量。如果它执行动态操作,它也可以是函数。)Shell语法不支持这种用法。可以通过eval
实现,但我推荐您。使用它是一个坏习惯,很容易导致漏洞被利用。从安全角度来看,安全地使用eval
是非常非常棘手的
与将代码存储在变量中不同,更好的作业工具是函数:
然后,只需在任何命令前面加上函数名:
maybe_show my_command arg1 arg2 arg3
(
$my_command
也不应该是变量。如果它执行动态操作,也可以是函数。)使用eval
时,这甚至不是一个好的解决方案。当使用eval
时,它甚至不是一个好的解决方案。我喜欢您的解决方案,但您能否添加示例,说明如何将$show\u output
和$my\u log
添加为参数?我发现在函数调用之前更改变量很麻烦,但可能我错了。为什么使用“$@”
而不是$@
?请参阅:“当展开发生在双引号内时,每个参数展开为一个单独的字。也就是说,“$@”
相当于“$1”“2”…
”在函数中处理参数与在脚本中处理参数相同。他们使用相同的语法和技巧。因此,您可以参考一些问题,如参数处理指南。我喜欢您的解决方案,但您能否添加一些示例,说明如何将$show\u output
和$my\u log
添加为参数?我发现在函数调用之前更改变量很麻烦,但可能我错了。为什么使用“$@”
而不是$@
?请参阅:“当展开发生在双引号内时,每个参数展开为一个单独的字。也就是说,“$@”
相当于“$1”“2”…
”在函数中处理参数与在脚本中处理参数相同。他们使用相同的语法和技巧。因此,您可以参考类似的问题,以获取关于论点处理的指南。