Я пытаюсь скопировать некоторые файлы из исходной папки в папки dest, после чего:
Я получаю имена файлов из папки des.Если файл существует в исходной папке, я копирую его из исходного в dest (сохраняя то же имя).
В противном случае, если файл из папки dest имеет определенное имя, я скопирую конкретный файл из источника в dest, сохранив имя файла dest.
И снова, если у него другое имя, я скопирую другой файл.
Моя проблема, по какой-то причине, во всех файлах, которые не входят в первый if
оператор введите оператор elif
, как бы его ни звали.
, поскольку код находится на неподключенном ноутбуке, я просто напишу более важную часть здесь
SRC_FOLDER=/PATH/TO/SRCFOLDER
DST_FOLDER=/PATH/TO/DSTFOLDER
cd ${DST_FOLDER}
FILES=$(find . -maxdepth 1 \( -name "*.txt" -o -name "*.odp" \) -type f | sort)
for NAME in ${FILES}; do
if [ -e ${SRC_FOLDER}/${NAME} ]; then
cp -fu ${SRC_FOLDER}/${NAME} ${NAME}
elif [ ${NAME}=="SpecificName1.txt" ]; then
cp -fu ${SRC_FOLDER}/CorrespondingFile1.txt ${NAME}
elif [ ${NAME}=="SpecificName2.txt" ]; then
cp -fu ${SRC_FOLDER}/CorrespondingFile2.txt ${NAME}
fi
done
Я попытался изменить свое утверждение elif с помощью [[ ... ]]
вместо [ ... ]
или $NAME
вместо ${NAME}
(кстати, я бы хотел узнать разницу между ними) и даже =
вместо ==
, и комбинацию всего этого, но это ничего не меняет.Сдается мне, что любые файлы из моего FILES
списка, которого нет в SRC_FOLDER
, попадут в первый оператор elif
.
Я также пытался написать else if
вместо elif
, но синтаксис, кажется, не принят (скрипт не будет работать вообще, говоря, что есть проблема с done
)
Я знаю, что уже есть много вопросов по поводу оператора if, но я не могне могу найти в них ответа на мою проблему.