0

以下对我有用:

>sleep 20 &
[1] 30414
>sleep 30 &
[2] 30415
>wait $30414 $30415

这一切正常,直到我想把它写到 tmp.csh

在我的 tem.csh 文件中

sleep 20 &
set pid1=$!
sleep 30 &
set pid2=$!

当谈到“等待”

wait $pid1 $pid2 => too many arguments
wait $pid1 => too many arguments
wait \$$pid1 => too many arguments
wait $($pid1) => Illegal variable name

我该怎么写?

这个问题是为了解决 我如何才能等到指定的“xterm”完成?

4

2 回答 2

1

“wait”命令不会等待特定的 PID。在 CSH 中尝试以下操作以等待特定的 PID:

#!/bin/csh -f

sleep 30 &
set pid1 = $!
sleep 40 &
set pid2 = $!

while ( `ps -p "$pid1,$pid2" | wc -l` > 1 )
  sleep 1
end
于 2013-08-17T09:07:59.317 回答
1

这在 tcsh 中对我有用:

#!/bin/tcsh

time
sleep 10 &
sleep 5 &
wait
time

看起来 wait 不需要任何参数,只是等到每个 backgorunded 进程完成。

于 2015-05-26T15:44:53.043 回答