假设我有以下脚本:
#!/bin/bash
for i in $(seq 1000)
do
cp /etc/passwd tmp
cat tmp | head -1 | head -1 | head -1 > tmp #this is the key line
cat tmp
done
Run Code Online (Sandbox Code Playgroud)
在关键线上,我读取和写入tmp
有时会失败的同一个文件。
(我读它是因为竞争条件,因为管道中的进程是并行执行的,我不明白为什么 - 每个人都head
需要从前一个中获取数据,不是吗?这不是我的主要问题,但你也可以回答。)
当我运行脚本时,它输出大约 200 行。有什么办法可以强制这个脚本总是输出 0 行(所以 I/O 重定向tmp
总是首先准备好,所以数据总是被破坏)?明确地说,我的意思是更改系统设置,而不是这个脚本。
谢谢你的想法。