Você precisa colocar sua declaração de teste entre aspas:
if [[ "${current_file_name}" == "*${this_file}*" ]];
Estou fazendo um script para renomear arquivos em uma pasta. O novo nome para os arquivos está em um arquivo de configuração. Eu tenho que ter certeza que o arquivo que eu quero renomear corresponde ao atual no arquivo de configuração. Meu código é esse:
#!/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
Meu problema é que o segundo loop sempre executa o intervalo e eu não sei porque, alguém pode me ajudar por favor?
Você precisa colocar sua declaração de teste entre aspas:
if [[ "${current_file_name}" == "*${this_file}*" ]];
Tags bash loop-device scripting exit