作为错误处理函数的一部分,我需要在捕获错误时报告当前正在执行的命令。 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没有回答这个问题,因为必须解析字符串并且可能包含多个嵌套变量。