Açıklaması şöyle. Script'i çalıştırırken verilen parametreleri - yani positional parameters dizisini - sola kaydırır
$ help shift
shift: shift [n]
Shift positional parameters.
Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is
not given, it is assumed to be 1.
Exit Status:
Returns success unless N is negative or greater than $#.
ÖrnekÖrnek
Elimizde şöyle bir script olsun.
- $# number of positional parameters anlamına gelir.
- while döngüsü ile positional parameters olduğu müddetçe dönülür.
- $1 ile ilk positional parametre alınır.
- shift ile positional parameters bir kere sola kaydırılır.
Yani aslında bu script her positional parametre ile bir iş yapar ve hepsini işleyince sonlanır
#!/bin/bash
#
while $# -gt 0 ; do
file="$1"
shift
year="$( echo "$file" | cut -c 14-17)"
mnth="$( echo "$file" | cut -c 18-19)"
[[ -d $year/$mnth ]] || mkdir -p $year/$mnth
echo mv "$file" $year/$mnth
done
Bu script'i çağırmak için şöyle yaparız. Böylece find ile bulunan her dosya, xargs'ın izin verdiği ölçüde topluca yukarıdaki script'e geçilir.find . -maxdepth 1 -type f -name '*201*' -printf | \
xargs -r the_script
Hiç yorum yok:
Yorum Gönder