【发布时间】:2013-08-07 13:07:14
【问题描述】:
以下作品适合我:
>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
我该怎么写呢?
【问题讨论】:
-
避免使用 C-shell。阅读C shell considered harmful。改用
zsh或bash或fishshell。阅读Advanced Bash Scripting Guide -
请注意
$30414已扩展为空!尝试以echo为前缀的wait命令以确保...... -
echo $pid1 echo $pid2 给出正确的数字。我猜这是我的 $($pid1) 语法错误?
-
真正切换到更现代的外壳。如您所见,没有人回答,因为我们都忘记了 C-shell(我在 1990 年代曾在 Sun4/110 工作站上使用过它)。
-
不是每个人都有选择使用外壳的奢侈。我必须在工作中使用 csh(在我的脚本中也是如此),因为我们有一些工具不能很好地与 bash 配合使用。我认为假设 OP 使用 csh 是省事的,因为他们必须......像 Fortran 一样,你不会为了好玩而拿起它。