3

我正在尝试编写一个脚本,该脚本在命令行上接受一组命令(类似于使用“time”命令的方式),让它执行该组命令,然后根据返回的错误代码做某事(如果你好奇,我会让它回叫我桌面上的语音守护程序以回显命令,如果它失败或成功 - 将它用于一些长时间运行的构建过程)

使用 unix time 命令,如果我有可以运行的命令列表

> time (do_build && deploy_build)

tellme当我尝试这个时,使用我的命令(我称之为)

> tellme (do_build && deploy_build)
bash: syntax error near unexpected token `do_build'

它似乎不喜欢将命令组作为参数,即使对于 time 命令来说完全相同的东西也能正常工作。

有任何想法吗?

4

3 回答 3

3

我猜你将不得不做类似的事情

tellme 'do_build && deploy_build'

在里面告诉我

eval "$*"
于 2012-05-08T19:21:55.490 回答
1

time实际上是在执行它的(do_build && deploy_build)参数并等待它。

$ time (sleep 1; echo hello world;);
mundo

real    0m1.098s
user    0m0.030s
sys     0m0.000s

$ echo asd (sleep 1; echo hello world;);
bash: syntax error near unexpected token `('

$ (sleep 1; echo hello world;);
mundo

您不能在任何地方使用子shell。

在您的情况下,您需要使用类似的东西

$ (sleep 1; echo hello world) && tellme && echo done;
于 2012-05-08T19:22:24.280 回答
0

你可以做

tellme "$(do_build && deploy_build)"

time 是内置的 bash,如果您使用 /usr/bin/time 而不是 time,您将看到同样的问题。

于 2012-05-08T19:33:21.293 回答