[+] Skrypt - wczytanie plików do p
To może tak:
Kod: Zaznacz cały
#!/bin/bash
x=0
until [[ $x = 100 ]]; do
x=$((x + 1))
if [[ $x -le 9 ]]; then
touch 0"$x".\ omg\ .mp3
echo "$x jest jednym znakiem"
else
touch "$x".\ omg\ .mp3
echo "$x jest wyrazeniem wieloznakowym"
fi
done
lista_plikow=`ls *.mp3|sort -n|sed -e 's/ //g'`
for items in ${lista_plikow
[*]}; do
echo ${items}
done
exit 0
Tak nie. Wczytanie do pętli nazw nieistniejących plików w dalszym przetwarzaniu zaowocuje nieznalezieniem pliku.
Bardziej skłonny jestem użyć ostatecznie pętli ,,while'':
Z całą pewnością istnieje jednak sposób na wczytanie do pętli plików w kolejności bez tworzenia listy plików. W tym sęk, że nie wiem jak.
Problem polega na tym, że pętla ,,for'' wczytuje pliki pojedynczo, więc, nie ma jak ich w niej sortować.
Edycja:
Znalazłem nowość dla mnie - zmienna ,,IFS''.
Teraz to już gra i buczy:
Dziękuję serdecznie za polemikę w tym temacie.
Bardziej skłonny jestem użyć ostatecznie pętli ,,while'':
Kod: Zaznacz cały
ls *.mp3 | sort -n > lista
while read LINE ; do
echo $LINE
done < lista
Problem polega na tym, że pętla ,,for'' wczytuje pliki pojedynczo, więc, nie ma jak ich w niej sortować.
Edycja:
Znalazłem nowość dla mnie - zmienna ,,IFS''.
Teraz to już gra i buczy:
Kod: Zaznacz cały
#!/bin/bash
x=0
until [[ $x = 100 ]]; do
x=$((x + 1))
if [[ $x -le 9 ]]; then
touch 0"$x".\ omg\ .mp3
echo "$x jest jednym znakiem"
else
touch "$x".\ omg\ .mp3
echo "$x jest wyrazeniem wieloznakowym"
fi
done
echo ""
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for FILE in $(ls *.mp3 | sort -n) ; do
echo "$FILE"
done
IFS=$SAVEIFS
exit 0