Hi!
i making a script to let me read a txt with filepath and can convert the image inside the filepath with imagemagick changing the name and source folder, i test line by line (without while loop) and work fine, but when i run the sh give me this error:
Bad for loop variable
this is the script:
#!/bin/bash
while IFS= read -r line
do
lala=$(echo $line | cut -d "/" -f 5)
caja=$(echo $line | cut -d "/" -f 5)
caja+="_TA_"
cd $line
ls $line | sed 's/ta_/convert ta_/g' > /home/procesadorm.txt
cant=$(wc -l < /home/procesadorm.txt)
rm /home/procesadorr.txt
for ((i=0;i<$cant;i++)); do echo $line >> /home/procesadorr.txt; done
cat /home/procesadorr.txt |
sed -e 's/\/media\/bkt2b1/\/convertidor\//g' |
sed -e 's/\/Prod100\//\//g' |
sed -e 's/\/Prod101\//\//g' |
sed -e 's/\/Prod102\//\//g' |
sed -e 's/\/Prod103\//\//g' |
sed -e 's/\/Prod104\//\//g' |
sed -e 's/\/Prod105\//\//g' |
sed -e 's/\/Prod170\//\//g' |
sed -e 's/\/Prod171\//\//g' |
sed -e 's/\/Prod172\//\//g' |
sed -e 's/\/Prod173\//\//g' |
sed -e 's/\/Prod174\//\//g' |
sed -e 's/\/Prod175\//\//g' |
sed -e 's/\/Prod176\//\//g' |
sed -e 's/\/Prod177\//\//g' |
sed -e 's/\/Prod178\//\//g' |
sed -e 's/\/Prod179\//\//g' |
sed -e 's/\/media\/Externo/\/home\/prueba/g' > /home/procesadorrr.txt
mkdir $(echo $line | sed -e 's/\/Prod100\//\//g' | sed -e 's/\/Prod101\//\//g' | sed -e 's/\/Prod102\//\//g' | sed -e 's/\/Prod103\//\//g' | sed -e 's/\/Prod104\//\//g' | sed -e 's/\/Prod105\//\//g' | sed -e 's/\/Prod170\//\//g' | sed -e 's/\/Prod171\//\//g' | sed -e 's/\/Prod172\//\//g' | sed -e 's/\/Prod173\//\//g' | sed -e 's/\/Prod174\//\//g' | sed -e 's/\/Prod175\//\//g' | sed -e 's/\/Prod176\//\//g' | sed -e 's/\/Prod177\//\//g' | sed -e 's/\/Prod178\//\//g' | sed -e 's/\/Prod179\//\//g' | sed -e 's/\/media\/Externo/\/home\/prueba/g')
ls $line | sed -e 's#ta_#/AR_AGN_DF_TA_#g' | sed -e 's/_DF_TA_/_DF_'"$caja"'/' | sed -e 's/_001.tif/_A.jpg/g' | sed -e 's/_002.tif/_R.jpg/g' > /home/procesadors.txt
paste -d "" /home/procesadorm.txt /home/procesadorrr.txt /home/procesadors.txt | sed -e 's/\/home/ \/home/g' > /home/procesador.sh
sh /home/procesador.sh
done < "/script/pendiente.txt"
if anyone can helpme i dont know why dont work!
Thx
#!/bin/bash
#This is a while looping in the /script/pendiente.txt where there was a list of #filepath, inside has TIF images in all the script will build the sh script who #convert with imagemagick al the tif in the source folder to a jpg with name #changed
#while for the list of folder`s with tif files
while IFS= read -r line
do
#if the path is /media/bk2tb1/Externo/Prod179/TA_4059 i save the last folder
#in two variables one to make the new filename
lala=$(echo $line | cut -d "/" -f 5)
caja=$(echo $line | cut -d "/" -f 5)
caja+="_TA_"
cd $line
#because al images start with ta i will adding convert in all lines because
#this is the imagemagick command to convert images
ls $line | sed 's/ta_/convert ta_/g' > /home/procesadorm.txt
#i count how much of files have the folder
cant=$(wc -l < /home/procesadorm.txt)
#because i will make a txt with the folder with the same cant of files in the
#next for i delete first
rm /home/procesadorr.txt
#this for will make me a txt with $cant lines in all lines file path, i using this
#because the i need add something in the paste between the source and #destination to change the destination folder
for ((i=0;i<$cant;i++)); do echo $line >> /home/procesadorr.txt; done
#this will replace the filepath becuse in the source have subfolders dont #needed in the destination
cat /home/procesadorr.txt |
sed -e 's/\/media\/bkt2b1/\/convertidor\//g' |
sed -e 's/\/Prod100\//\//g' |
sed -e 's/\/Prod101\//\//g' |
sed -e 's/\/Prod102\//\//g' |
sed -e 's/\/Prod103\//\//g' |
sed -e 's/\/Prod104\//\//g' |
sed -e 's/\/Prod105\//\//g' |
sed -e 's/\/Prod170\//\//g' |
sed -e 's/\/Prod171\//\//g' |
sed -e 's/\/Prod172\//\//g' |
sed -e 's/\/Prod173\//\//g' |
sed -e 's/\/Prod174\//\//g' |
sed -e 's/\/Prod175\//\//g' |
sed -e 's/\/Prod176\//\//g' |
sed -e 's/\/Prod177\//\//g' |
sed -e 's/\/Prod178\//\//g' |
sed -e 's/\/Prod179\//\//g' |
sed -e 's/\/media\/Externo/\/home\/prueba/g' > /home/procesadorrr.txt
#this make a destination folder replacing the same subfolder dont needed in #the output
mkdir $(echo $line | sed -e 's/\/Prod100\//\//g' | sed -e 's/\/Prod101\//\//g' | sed -e 's/\/Prod102\//\//g' | sed -e 's/\/Prod103\//\//g' | sed -e 's/\/Prod104\//\//g' | sed -e 's/\/Prod105\//\//g' | sed -e 's/\/Prod170\//\//g' | sed -e 's/\/Prod171\//\//g' | sed -e 's/\/Prod172\//\//g' | sed -e 's/\/Prod173\//\//g' | sed -e 's/\/Prod174\//\//g' | sed -e 's/\/Prod175\//\//g' | sed -e 's/\/Prod176\//\//g' | sed -e 's/\/Prod177\//\//g' | sed -e 's/\/Prod178\//\//g' | sed -e 's/\/Prod179\//\//g' | sed -e 's/\/media\/Externo/\/home\/prueba/g')
#this will make the output image name
ls $line | sed -e 's#ta_#/AR_AGN_DF_TA_#g' | sed -e 's/_DF_TA_/_DF_'"$caja"'/' | sed -e 's/_001.tif/_A.jpg/g' | sed -e 's/_002.tif/_R.jpg/g' > /home/procesadors.txt
#this will make a join between the (convert +imput #name)/home/procesadorm.txt+(destination path) /home/procesadorrr.txt+ #(destination filename) /home/procesadors.txt
paste -d "" /home/procesadorm.txt /home/procesadorrr.txt /home/procesadors.txt | sed -e 's/\/home/ \/home/g' > /home/procesador.sh
# this will call the script maked
sh /home/procesador.sh
#this will return to first line if not end of file (/script/pendiente.txt)
done < "/script/pendiente.txt"
Thx to all to help me in this
sorry about my english i really speak spanish
i test all lines without loop and work fine, i using files as a input files because i using this to make a sh file, and then run it i can try making only one sh for all the file to convert, but still will need the output file for later make a paste. But the loop error will continue happening