最好不要使用eval

时间:2015-12-07 21:46:31

标签: bash

作为错误处理函数的一部分,我需要在捕获错误时报告当前正在执行的命令。 bash $ BASH_COMMAND字符串包含命令,但嵌套的非扩展变量。如果有更好的方法,我想避免使用eval。

给出这些输入变量:

path1="a/a/a"
path2="b/b/b"
BASH_COMMAND='mycommand "$path1" $path2'

生成此输出变量:

expanded='mycommand a/a/a b/b/b"

这适用于eval,但我担心这可能不安全:

expanded=$(eval echo "$BASH_COMMAND")

编辑:正如chepner在下面的评论中解释的那样,Bash expand variable in a variable没有回答这个问题,因为必须解析字符串并且可能包含多个嵌套变量。

0 个答案:

没有答案