You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本中diff命令的条件判断实现与逻辑控制

Bash脚本优化:按需处理文件差异

先给你整理好的优化后脚本,核心是合并diff命令并通过退出码做条件判断,避免冗余执行:

# Do the match between the text files

echo " "
echo "match with diff: "
echo " "
# 用-sq参数合并原有的两个diff命令,一次执行完成提示输出
diff -sq FromRucio_$NAME.txt FromFolder_$NAME.txt

# 判断diff的退出码:1表示文件存在差异,此时执行后续操作
if [ $? -eq 1 ]; then
    echo ""
    echo "this is the missing files between the files"
    echo "sample: $NAME" >> totalresult_test.txt
    sort FromRucio_$NAME.txt FromFolder_$NAME.txt | uniq -u >> totalresult_test.txt
fi

echo "_____________________________________________________________________________________"
echo " "

关键说明:

  • 合并diff命令:diff -sq组合了-s(文件相同时提示“Files ... are identical”)和-q(文件不同时仅提示“Files ... differ”)的功能,一次执行就能覆盖你原来两个diff命令的输出需求,彻底消除冗余。
  • 条件判断逻辑:diff命令的退出码规则是:
    • 0:两个文件完全相同
    • 1:两个文件存在差异
    • 2:执行出错(比如文件不存在)
      我们通过$?获取上一条命令的退出码,当退出码为1时,才执行sort和写入结果文件的操作,完全符合你“仅在diff -q有输出时执行后续步骤”的需求。
  • 优化写入操作:把echo "sample: $NAME \n"改成echo "sample: $NAME",因为bash里\n不会被echo直接解析,直接写内容更稳妥。

内容的提问来源于stack exchange,提问作者ryse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:25:26