我正在制作一个脚本来重命名文件夹中的文件。文件的新名称位于配置文件中。我必须确保要重命名的文件与配置文件中的当前文件相对应。我的代码是:
#!/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
我的问题是第二个循环总是执行中断,我不知道为什么,有人可以帮助我吗?
答案1
您必须将测试语句放在引号中:
if [[ "${current_file_name}" == "*${this_file}*" ]];
答案2
我认为你可以去掉括号:
if [[ "$current_file_name" = "$this_file" ]]; then
另外,我建议只使用一个等号,根据我的经验,它更可靠。