Мой сценарий if bash всегда выполняет break

Я пишу скрипт для переименования файлов в папке. Новое имя для файлов находится в файле конфигурации. Я должен быть уверен, что файл, который я хочу переименовать, соответствует текущему файлу в конфигурационном файле. Мой код такой:

#!/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, и я не знаю почему, может кто-нибудь мне помочь, пожалуйста?

0
11.01.2019, 13:30
1 ответ

Вы должны заключить ваше тестовое утверждение в кавычки:

if [[ "${current_file_name}" == "*${this_file}*" ]];
0
28.01.2020, 04:51

Теги

Похожие вопросы