Løkker

for-løkker

Der er mange mådet at køre en for-løkke, og alt efter behov kan du bruge nedenstående.

Alle løkkerne her under giver følgende udskrift:

1
2
3
4
5

Når du kender antallet af gange, f.eks. 1-5

	#!/bin/bash 
for i in $(seq 1 5); do
  echo $i
done

Skal løkken køre indtil den når en variabel skriver du den ind

	#!/bin/bash 
end=5
for i in $(seq 1 $end); do
  echo $i
done

Vil du have helt styr på det kan du anvende metoden fra C.

for ((*startværdi*;slutværdi;vækst)
	#!/bin/bash 
for ((i=1;i<=5;i++)); do
  echo $i
done

Disse skripts kan ogsp køres på en linie:

thoj@thoj-VirtualBox:~$ for i in $(seq 1 5); do echo $i; done
1
2
3
4
5

Gennemløb af filer

	#!/bin/bash 
for file in *; do
  echo $file	
done

Test af større kode

#!/bin/bash

#~ file rename made by Thomas Jensen
#~
#~ Renames files in directory with . 
#~
#~ If two or more files have the same filename with different extensions, then
#~ the consecutive number will not change
#~
#~ Usage: newfn.sh 
#~


n=0

check_filename=""

for file in *; do

  test -f "$file" || continue #Tester om det er en fil

  filename=${file%%.*}
  old_filename=${file%%.*}
  new_filename=$1

  if [[ ${filename} == ${check_filename} ]]; then

    extension=${file#*.}
    number=$(printf %03d $n)
    check_filename=${file%%.*}
    
    if [[$extension == "xmp"]]; then
    
		sed -i s/${filename}

  else
    extension=${file#*.}  
    ((n++))
    number=$(printf %03d $n)
    check_filename=${file%%.*}

  fi

#  printf "\n${filename}_$(date +%Y%m%d)_${number}.$extension\n"

  printf "\n${new_filename}_${number}.$extension\n"
  mv $file ${new_filename}_${number}.$extension
  


done


  printf "\n"