我正在对以下形式的自定义二进制文件进行计时:./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