我正在编写bash脚本,将几个输出重定向到文件,然后读取文件,以便编写它们。我发现,有时重定向中的一个是在之后编写,连续的重定向已经完成。例如,第2行在第1行之前是完整的。
line 1: a > a1
line 2: b > b1使用“睡眠”在字里行间空转是可行的,但这是一个非常糟糕的解决方案。因为某种原因“等待”不起作用。正确的解决办法是什么?为什么“等待”功能不起作用?
谢谢!
编辑:
我对我的脚本技巧感到有点羞愧,但是下面是#!/bin/bash的一部分:
grep Alpha output.dat | cut -d'=' -f2 | cut -d'.' -f1 > ./$run_dir/Alpha
grep Beta output.dat | cut -d'=' -f2 | cut -d'.' -f1 > ./$run_dir/Beta
grep flap output.dat | cut -d'=' -f2 > ./$run_dir/flap_angle
grep CLtot output.dat | cut -d'=' -f2 > ./$run_dir/CLtot
grep CYtot output.dat | cut -d'=' -f2 | cut -c-10 > ./$run_dir/CYtot
grep Cltot output.dat | cut -d'=' -f3 | cut -c-10 > ./$run_dir/Cltot
grep Cmtot output.dat | cut -d'=' -f3 | cut -c-10 > ./$run_dir/Cmtot
grep Cntot output.dat | cut -d'=' -f3 | cut -c-10 > ./$run_dir/Cntot
ls -tr ./$run_dir > ./$run_dir/files_string
cd ./$run_dir
octave ../assemble_matrix.m运行八度时,我依赖于“files_string”中文件名的顺序来组装CLtot、CYtot等中的数值矩阵。有时,我知道'files_string‘写在'Cntot’之前,在调用第二个到最后一个文件时,我希望得到数字值(来自'Cntot'),但是我得到了字符(来自'files_string')。不用说,它也发生在数值之间--它不会使我的代码崩溃,但它仍然会导致逻辑错误。
发布于 2016-05-02 16:06:25
文件修改时间粒度仅为第二位。如果ls运行得足够快,files_string的时间戳将与Cntot相同,因此-t选项不会强制它们之间进行特定的排序。对于具有相同时间戳的文件,它按名称对它们进行排序。
使用files_string的名称(按字母顺序排在Cntot后面),您应该得到正确的结果。
发布于 2016-05-01 14:18:56
试试看,a > a1 && b > b1
https://stackoverflow.com/questions/36965143
复制相似问题