Я пытаюсь сравнить файлы в двух каталогах, но у меня возникают проблемы с тем, что моя команда 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