我正在尝试使用cygwin在Windows 7上运行bash脚本。该脚本采用两个文件目的地列表(文件在不同的文件夹对中散布),迭代它们并检测文件是否更改。
#!/bin/bash
src=(
"./src/index.js"
"./src/index_2.js"
)
dest=(
"./client/src/index.js"
"./client/src/index_2.js"
)
arraylength=${#src[@]};
for (( i=0; i<${arraylength}; i++ ));
do
DIFF=$(diff -u ${src[$i]} ${dest[$i]})
if [ $? != 0 ]; then
echo "$DIFF"
echo "Files ${src[$i]} and ${dest[$i]} are not equal!"
exit 1
fi
done
echo "All files are equal"
当我运行./shareddiff.sh
之类的命令时,该命令执行时没有错误,但没有显示任何内容(没有回显消息)。即使我手动更改了index.js
或index_2.js
文件中的一个 - 它也没有检测到更改。
知道我可能做错了吗?
答案 0 :(得分:0)
你在传递文件参数时误用了diff;你可以比较两个文件或两个目录,而不是两个文件列表。
SYNOPSIS
diff [OPTION]... FILES
FILES are 'FILE1 FILE2' or 'DIR1 DIR2' or 'DIR FILE' or 'FILE DIR'. If
--from-file or --to-file is given, there are no restrictions on
FILE(s). If a FILE is '-', read standard input. Exit status is 0 if
inputs are the same, 1 if different, 2 if trouble.
尝试
diff -uR src client/src