我们如何在执行完后立即获取/保存 bash 接受并执行的最终命令行字符串
eval
$ cmd=ls; f=package.o ; eval $cmd $f
+ cmd=ls
+ f=package.o
+ eval ls package.o
++ ls package.o
package.o
我们看到 xtrace 打印出倒数第二个字符串(删除了前缀 ++):
ls package.o
必须位于 Bash 变量中
您可以重新定义
eval
以保存其参数:
eval(){
eval_args=("$@")
builtin eval "$@"
}