2017-11-20 26 views
0

cygwinを使用してWindows 7でbashスクリプトを実行しようとしています。スクリプトは2つのファイル送り先のリストを取ります(ファイルは異なるフォルダのペアに振り分けられます)、それらを繰り返し、ファイルが変更されたかどうかを検出します。cygwinを使用してWindows上で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

ファイル引数を渡す際にdiffを誤って使用しています。 2つのファイルまたは2つのディレクトリを比較できますが、2つのファイルのリストは比較できません。

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 = $(差分-u $ {SRC [$ i]は} $ {DEST [$ I]})の一部`、すべて万一

diff -uR src client/src 
+0

を試しますその下で動作しますか? スクリプト全体を単純なエコーで置き換えても、 'echo" Hello World "'のように出力が表示されません。 – idjuradj

+0

エコーが機能しない場合は、diffの問題ではありません。どの端末を使用していますか? – matzeri

+0

私はCygwinを使用しています。 – idjuradj

関連する問題