尝试使用cygwin在Windows上执行bash脚本的问题

时间:2017-11-20 22:22:18

标签: cygwin

我正在尝试使用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.jsindex_2.js文件中的一个 - 它也没有检测到更改。

知道我可能做错了吗?

1 个答案:

答案 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