我如何等待在shell脚本中写入文件?

时间:2014-11-17 00:09:25

标签: bash shell

我有一个名为parent.sh的shell脚本执行某些操作,然后关闭并调用另一个shell脚本child.sh,它执行一些处理并将一些输出写入文件output.txt。< / p>

我希望parent.sh脚本只在写入output.txt文件之后继续处理。我怎么知道该文件已写完?

编辑:添加问题的答案: child.sh在退出之前是否完成了对文件的写入?

parent.sh是在前台还是后台运行child.sh?我不确定 - 它是否正在使用这样的parent.sh进行调用: ./child.sh "$param1" "$param2"

1 个答案:

答案 0 :(得分:1)

您需要wait命令。 wait将等到所有子流程完成后再继续。

parent.sh:

#!/bin/bash

rm output.txt

./child.sh &

# Wait for the child script to finish
#
wait

echo "output.txt:"
cat output.txt

child.sh:

#!/bin/bash
for x in $(seq 10); do
    echo $x >&2
    echo $x
    sleep 1
done > output.txt

以下是./parent.sh的输出:

[sri@localhost ~]$ ./parent.sh 
1
2
3
4
5
6
7
8
9
10
output.txt:
1
2
3
4
5
6
7
8
9
10