【发布时间】:2015-05-28 20:38:15
【问题描述】:
我正在用 bash 编写一个小的 shell 脚本,以使用 time 命令测量几个可执行文件的速度。因为想给几个不同的程序计时,为了避免重复自己,我保存了时间命令和我想要的格式字符串,并尝试使用变量扩展(以测试ls的性能为例):
#!/usr/bin/env bash
timer="/usr/bin/time -f 'elapsed time: %E' --"
$timer ls 1>/dev/null
time 命令应该使用-- 将其选项(在本例中为格式字符串)与它应该计时的命令分开。但是,在此脚本中 time 坚持尝试执行我的格式字符串并失败
/usr/bin/time cannot run time:: No such file or directory
Command exited with non-zero status 127
'elapsed
但是如果我把整个命令放在一行没有变量扩展它正确识别格式字符串并执行ls:
#!/usr/bin/env bash
/usr/bin/time -f 'elapsed time: %E' -- ls 1>/dev/null
产生“经过的时间:0:00.00”
我最终只是在每一行输入了整个命令以使其运行,但我很好奇是否有人能解释为什么变量扩展在这里不起作用。
【问题讨论】: