Linux bash - Przyjmowanie i obsługa argumentów zawierających spacje
Pisałem ostatnio dość proste skrypty w Bashu, mimo to napotkałem problem dotyczący obsługi przyjmowanych przez nie argumentów zawierających białe znaki, takie jak spacje. Okazuje się, że rozwiązanie tego problemu jest trywialne, ale w mojej ocenie warte zanotowania.
W czym problem?
Skrypty które tworzyłem miały operować na pliku, którego nazwa przekazywana była do nich jako parametr. Kiedy jednak nazwa takiego pliku zawierała spacje, skrypt zaprzestawał poprawnego działania, traktując każdy fragment nazwy z osobna. Pierwsza myśl jaka mi przyszła do głowy, to by podczas wywoływania skryptu zamknąć argument w cudzysłowach, jednak nie przyniosło to pozytywnych rezultatów. Podejście to, jest jednak bardzo bliskie prawidłowego rozwiązania!
Jak używać argumentów zawierających spacje?
Otoczyłem argument cudzysłowami podczas wywołania, a trzeba było otoczyć nimi wykorzystywaną zmienną w kodzie skryptu! Np. "$1", "$2", ... Sprawa bardzo prosta, a jednak może zrobić problem. Przykładowy skrypt, w którym nie będziemy musieli martwić się o spacje w przesyłanej nazwie pliku, może wyglądać następująco:iconv -f CP1250 -t UTF-8 "$1" > temp
rm "$1"
mv temp "$1"
Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!