bash I / O重定向序列

时间:2016-05-01 09:32:59

标签: bash redirect

我正在编写bash脚本,将多个输出重定向到文件,然后按顺序读取文件。我发现有时其中一个重定向是在完成连续重定向之后写完成的。例如第2行在第1行之前完成。

Main.java:12: error: illegal start of expression
    twoSum({2,4,7},9);
           ^
Main.java:12: error: ';' expected
    twoSum({2,4,7},9);
            ^
Main.java:12: error: illegal start of expression

使用" sleep"解决了这个问题,但这是一个非常糟糕的解决方案。出于某种原因"等待"不起作用。什么是正确的解决方案?为什么"等待"功能不起作用?

谢谢!

编辑:

我对自己的脚本编写技巧感到有点惭愧,但这里是#!/ bin / bash的一部分:

line 1:   a > a1
line 2:   b > b1

运行八度音程我依赖于' files_string'中的文件名顺序在CLtot,CYtot等中组装数值矩阵。有时我会得到' files_string'是在Cntot'之前写的,在调用倒数第二个文件时,我希望数字值(来自' Cntot')但是我得到了字符(来自' files_string') 。 不用说它也发生在数值之间 - 它不会使我的代码崩溃,但它仍会导致逻辑错误。

2 个答案:

答案 0 :(得分:0)

文件修改时间粒度仅为秒。如果ls运行得足够快,则files_string的时间戳将与Cntot相同,因此-t选项不会强制它们之间的特定排序。对于具有相同时间戳的文件,它按名称对它们进行排序。

files_string后按字母顺序使用Cntot的名称,您应该得到正确的结果。

答案 1 :(得分:-2)

试一试a > a1 && b > b1