私は2つのディレクトリのファイルを比較しようとしていますが、私のstatコマンドを正しく動作させるのに問題があります。私はここにあるのと同じ構文を使ってコマンドラインから動作させることができます。 。 <でマークされた行でBashスクリプト、サブディレクトリを使ったコマンド
# Usage: compdir <base_dir> <modified_dir>
# Handle MODIFIED and REMOVED files
for i in "${arr1[@]}"
do
REMOVED=1
for j in "${arr2[@]}"
do
if [ $i = $j ]; then
# take time stamps
dir1="$1"
dir2="$2"
stamp1=stat --format %Y "$i" <--------- THIS LINE
stamp2=stat --format %Y "$j"
if [[ $stamp1 > $stamp2 ]] ; then
echo "$j MODIFIED"
fi
REMOVED=0
break
fi
done
if [ $REMOVED -eq 1 ]; then
echo $i REMOVED
fi
done
# handle NEW files
for j in "${arr2[@]}"
do
NEW=1
for i in "${arr1[@]}"
do
if [ $j = $i ]; then
NEW=0
break
fi
done
if [ $NEW -eq 1 ]; then
echo "$j NEW"
fi
done
-------と私の下の行は、エラー--formatを取得する:コマンドが見つかりません。私はベースディレクトリにあり、サブディレクトリではないので、これを仮定しています。引き渡される引数はディレクトリの名前なので、私は "$ 1/$ i"のような行為をしようとしましたが、行を稼働させるのに運がなかったのです。
あなたは 'stamp1 = $(stat --format%Y" $ i ")'と 'stamp2 = $(stat --format%Y" $ j ")'を使う必要があります。より多くの構文問題を確認するにはhttp://www.shellcheck.net/を参照してください。 – Inian