我有一个bash脚本作为bash作业提交.它创建一些文件,执行一些计算,将输出文件移动到其他地方并清理.对于移动输出文件,它包含以下行:
set -e
mv $tmp/stdout.txt $current/tmp.stdout.txt
grep Report $current/tmp.stdout.txt >/dev/null 2>&1
mv $current/tmp.stdout.txt $current/stdout.txt
set +e
Run Code Online (Sandbox Code Playgroud)
如果计算成功,则输出文件stdout.txt
包含多行开头Report
; 但如果没有,则没有.进一步处理检查$current/stdout.txt
文件是否存在(否则重新提交作业).
第一个mv
将输出文件从临时目录移动到临时名称下的最终目录; 第二个mv
将输出文件重命名为其最终名称.但是grep
介于两者之间的目的是什么?如果输出文件包含行Report
,则将它们重定向到\dev\null
并且没有任何反应.如果输出文件不包含任何行Report
,则它不会输出任何内容,既不会重定向stdout
也不会重定向stderr
.所以,我的印象是,这条线什么都不做,我应该取代mv
+ grep
+ mv
由单一mv
.我在这里忽略了哪些功能?