我有一个 bash 脚本,它将一行文本打印到一个文件中,然后调用第二个脚本将更多数据打印到同一个文件中。让我们称它们为 script1.sh 和 script2.sh。它被分成两个脚本的原因是因为我有不同版本的 script2.sh。
脚本1.sh:
rm -f output.txt
echo "some text here" > output.txt
source script2.sh
脚本2.sh:
./read_time >> output.txt
./run_program
./read_time >> output.txt
重复 script2.sh 中三行的变化。
这似乎在大多数情况下都有效,但每隔一段时间,文件 output.txt 不包含“some text here”行。起初我以为是因为我是这样调用 script2.sh 的:./script2.sh
。但即使使用source
问题仍然存在。该问题不可重现,因此即使我尝试更改某些内容,我也不知道它是否真的已修复。
这可能是什么原因造成的?
编辑:脚本非常简单。script1 与您在此处看到的完全相同,但文件名不同。脚本 2 是我发布的,但随后重复了相同的 3 行,并且./run_program
可以有不同的参数。我为输出文件做了一个 grep,>
但它并没有出现在任何意想不到的地方。
这些脚本的使用方式是 script1 是由程序创建的(版本之间的唯一区别是source script2.sh
行。然后使用 ssh 在另一台计算机(实际上是 FPGA 上的 linux)上运行此 script1.sh。在此之前完成,输出文件也是用ssh删除的。不知道为什么,但我没有写这一切。另外,我检查了主机上运行的代码。输出文件唯一提到的是当它使用 ssh 删除,并且在 script1 完成后将其复制回主机时。
编辑 2:我终于设法通过剥离 script2.sh 的所有内容,但单行打印到文件中,以合理的速度重现问题。这也让我可以更快地进行测试。一旦我遇到了这个问题,我每运行 10 次就会遇到 1 到 4 次问题。在脚本运行之前删除通过 ssh 删除文件的命令似乎已经解决了问题。我将对其进行更多测试以确定,但我认为它已经解决了。尽管我仍然不确定为什么会出现问题。我认为在执行所有删除命令之前 ssh 命令不会退出。