Chciałbym uruchomić skrypt BASHA z parametrami w ten sposób:
./skrypt parametr1:parametr2:parametr3
Znalazłem pewne rozwiązanie umieszczając w skrypcie modyfikacje zmiennej IFS na następującą:
IFS=':'
a następnie rozdzielając zmienną $1 poleceniem:
set $1
Wtedy parametr1 mam w $1, parametr2 w $2, a parametr3 w $3.
Jednak problem pojawia się, gdy przy wywoływaniu skryptu, któryś z parametrów zawiera w sobie spację. Wtedy już cały napis nie jest w zmiennej $1 i opisana powyżej metoda nie działa.
Czy jest jakiś sposób na zmuszenie shella do ignorowania tych spacji?
Interesuję mnie także czy jest możliwość scalenia zmiennych $1, $2, $3 , … itd. w zmienną $1. Takie rozwiązanie też mnie satysfakcjonuje, bo mogę znowu wykorzystać powyższą metodę.
Być może są jeszcze jakieś inne sposoby. Czekam na propozycję i komentarze.
Większość parametrów w bashu składjących się z dwóch wyrazów najczęściej rozdzielana jest przy pomocy myślnika. W bashu np. katalogi zawierające nazwę ze spacjami obejmuje się w cudzysłów lub slash i backslash. Ode mnie to tyle, dalej kombinuj sam czy to zadziała.
A nie możesz sobie po prostu podzielić “$@” lub “$*” na grupy odseparowane dwukropkiem i zapisać do zmiennej tablicowej? Jeżeli już naprawdę musisz je mieć potem pod $1, $2… to chyba da się wartości z tablicy przypisać do kolejnych zmiennych… (sorry ża same przypusczenia, ale w bashu nie jestem dobry, wolę Perla ;))