我有一个 bash 脚本,它将两个档案(jar 文件)扩展为两个目录,然后对两个文件夹进行比较。我希望将差异通过管道传输到文件中,因此我在 bash 文件中执行此操作。
diff -r $originalJarExtracted $assembledJarExtracted >target/$diffList
虽然这有效,但它也会停止脚本,并且之后的任何内容都不会执行。我怎样才能让 diff 将其输出传输到文件中并使脚本继续运行。我查看了 diff 的信息和手册页,但无法让它工作。顺便说一句,我正在 mac 上运行脚本。
仅供参考,脚本是在 github 上
答案1
疯狂猜测:您的脚本正在set -e
(同义词set -o errexit
:)下运行,如果任何命令返回非零状态(通常表示失败),这会导致 shell 退出。如果是这样,如果diff
发现任何差异,它将退出,因为diff
如果发现差异,则返回状态 1。如果这是问题所在,则将该行更改为
diff -r "$originalJarExtracted" "$assembledJarExtracted" >"target/$diffList" ||
[ $? -eq 1 ]
diff
然后,仅当返回 0(无差异)或 1(差异)以外的状态时,即仅当出现文件丢失等错误时,脚本才会退出。