这是一个小文件,它将文件与另一个文件夹区分开来。如果没有 diff,retrun代码为零 - 为了成功,如果之间存在差异 两个文件,diff返回1,表示不成功。如果你使用quiet标志,diff会返回一个非常好的“这两个文件不同的通知。
我想唯一的问题是我想使用if语句,但我真的不想要 在“没有文件差异”或成功的情况下打印任何内容。我真的不想打印零成功。但我不能离开if;然后“没有”。我必须在当时之后输入一些命令。如果在“then”之后该行是黑色的,则程序错误输出。 “bash if”在“then”之后需要命令如果我只是输入一个echo语句,它会打印一个空白行。我也不想要那个。 我希望脚本在完全成功时什么也不做,只告诉我什么时候失败。所以 我不想要回声“$?”返回返回码。实际上我不需要任何东西。 我希望与“如果成功”相反。我试过测试一个if [!差异原始目标]但现在确实有效。
capser@casperhost:~$ cat /come/and/play/with_us/danny/puc_diff.sh2
#!/bin/bash
#set -x
original="/home/casper"
target="/sbcimp/dyn/data/EVT/GSD/scripts"
date=$(/bin/date +%Y%m%d)
for i in PUCZ.pl POI.pl PUConoff.pl PUCVolBands.pl PUCC.pl
do
if diff -q $original/$i $target/$i
then
echo "$?"
fi
done
exit 0
capser@casperhost:~$ /come/and/play/with_us/danny/puc_diff.sh2
0
0
0
0
Files /home/casper/PUCC.pl and /where/on/a/road/to/nowhere/PUCC.pl differ
capser@casperhost:~$
〜 〜
答案 0 :(得分:0)
你想要这个吗?
function casper_diff() {
original="/home/casper"
target="/sbcimp/dyn/data/EVT/GSD/scripts"
date=$(/bin/date +%Y%m%d)
for i in PUCZ.pl POI.pl PUConoff.pl PUCVolBands.pl PUCC.pl; do
if ! diff -q $original/$i $target/$i; then
return 1 # difference found, return
fi
done
return 0
}
casper_diff
您可以使用此语法来反转意义:
if ! diff -q $original/$i $target/$i; then
echo "same"
fi
如果您想留空,请使用":"
if diff -q $original/$i $target/$i; then
: # nop
else
echo "same"
fi