我正在尝试按照以下步骤将某些文件从源文件夹复制到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
我尝试通过使用[[ ... ]]
代替[ ... ]
或$NAME
代替${NAME}
来更改elif语句(我想知道两者之间的区别顺便说一句),甚至是=
而不是==
,以及所有这些的结合,但这并没有改变。在我看来,我的FILES
列表中不在SRC_FOLDER
中的所有文件都将进入第一个elif
语句。
我也尝试过写else if
而不是elif
,但是语法似乎没有被接受(脚本根本无法使用,说明{{1 }})
我知道关于if语句已经存在很多问题,但是我在其中找不到解决我问题的答案。