将多个命令传递给脚本调用时间

Passing multiple commands to script calling time

我有一个 bash 脚本让我们说 foo.sh 在这个最小的例子中看起来像这样:

#!/bin/bash
function __measure_time {
  time "$@"
}
__measure_time "$*"

我现在想做的是将两个命令传递给这个脚本,这两个命令应该是 运行 一个接一个,我想测量时间。所以基本上我在做类似的事情:

./foo.sh bash -c "echo 'ss' && sleep 1"

但这并不像我想要的那样有效。我没有从回声中得到 'ss' 并且睡眠基本上被忽略了。有没有办法让这个工作?

如果你想让参数正确传递,你需要用"$@"调用__measure_time,而不是"$*":

#!/bin/bash
__measure_time() { #why the `function` syntax when you can be POSIX?
  time "$@"
}
__measure_time "$@"

"$*"$IFS 的第一个字符上的所有参数连接成一个字符串。 "$@" 是 "give me all the arguments, as if each was separately quoted."

的魔法