linux - Bash Shell Script Inner loop of Nested Loops not working -


in attempting rename set of files variations of (1-26), left/right , png/bmp have following script

#!/bin/bash  number_list=$(seq -f "%03g" 1 26) ext_list=("png" "bmp") side_list=("right" "left") number in $number_list     side in $side_list             ext in $ext_list                       old="${side}_${number}.${ext}"             new="${number}_${side}.${ext}"             mv $old $new          done     done done 

only files designated right , bmp renamed. looks iterating through outermost loop, , not iterating through inner loops (just uses first element).

i've looked elsewhere on net having trouble finding relevant.

any guesses might wrong?

thanks, jeff

your first assignment

number_list=$(seq -f "%03g" 1 26) 

assigns string created output of seq number_list. next 2 assignments

ext_list=("png" "bmp") side_list=("right" "left") 

create arrays. array variable, $ext_list equivalent ${ext_list[0]}, is, it's first element of array. iterate on values of array, use

for ext in "${ext_list[@]}" 

note outermost loop works because iterating on whitespace-separated strings stored in number_list. is, if number_list 0 1 2 3, number set in order 0, 1, 2, 3. same apply faulty attempt @ loop. consider

ext_list=("png bmp" "gif tif") ext in $ext_list; 

ext_list expand png bmp, , since expansion not quoted, ext assigned png, bmp. if incorrectly wrote

for ext in ${ext_list[@]}; 

then ext take png, bmp, gif, tif values. equally incorrect

for ext in "$ext_list"; 

would produce single iteration, ext assigned value png bmp gif tif.


Comments

Popular posts from this blog

sublimetext3 - what keyboard shortcut is to comment/uncomment for this script tag in sublime -

java - No use of nillable="0" in SOAP Webservice -

ubuntu - Laravel 5.2 quickstart guide gives Not Found Error -