Я пишу скрипт для переименования файлов в папке. Новое имя для файлов находится в файле конфигурации. Я должен быть уверен, что файл, который я хочу переименовать, соответствует текущему файлу в конфигурационном файле. Мой код такой:
#!/bin/bash
. conf.cfg
number_of_files=`echo "$filename"|wc -l`
#echo "$number_of_files"
existing_files=`find iputemp/ `
echo "$existing_files"
iterations=`echo "$existing_files"|wc -l`
#echo "$filename"
for x in `seq 1 $iterations`; do
current_file_name=`echo "$filename"|sed -n "$x"p`
echo "$current_file_name"
echo "$x"
for z in `seq 1 $number_of_files`; do
this_file=$(echo "$existing_files"|sed -n ${z}p|cut -d '/' -f2)
echo "$z"
if [[ ${current_file_name} == *${this_file}* ]]; then
echo "EXIST"
mv iputemp/${tile} ${current_file_name}
sleep 0.5
break
fi
done
done
Моя проблема в том, что второй цикл всегда выполняет break, и я не знаю почему, может кто-нибудь мне помочь, пожалуйста?
Вы должны заключить ваше тестовое утверждение в кавычки:
if [[ "${current_file_name}" == "*${this_file}*" ]];