将多个命令传递给脚本调用时间
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."
的魔法
我有一个 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."