/bin/time 如何处理引用的参数

/bin/time 如何处理引用的参数

我正在对以下形式的自定义二进制文件进行计时:./prog --opt1=arg1 --opt2=arg2 --opt3="arg3"

第三个选项必须有一个带引号的参数。我在脚本中保存了所有选项:

exec=./prog
opts="--opt1=arg1 --opt2=arg2 --opt3=\"arg3\""

当我尝试对程序进行计时时,程序解析参数时出现错误。我猜是因为它看到最后一个参数没有被引用。输出/bin/time

\bin\time -v $exec $opts

Error parsing args(来自我的程序)
Command being timed: "./prog --opt1=arg1 --opt2=arg2 --opt3="arg3""

然而当我只是复制粘贴时,索赔命令是,它运行良好:

./prog --opt1=arg1 --opt2=arg2 --opt3="arg3"--运行良好

这是怎么/bin/time回事?我该如何修复?我猜这与引号有关,比如它可能会运行 eval 之类的。我不确定该怎么办。

答案1

我通过将整个命令设置为变量,然后评估该变量来解决此问题:

$ full_cmd="/bin/time -v $exec $opts"
$ eval $full_cmd

相关内容