Zdravim, pustil jsem se do psaní bash skriptů (začínám) a hned jsem narazil na problém, pokud chci použít funkci. Když použiju funkci s argumentem (string s mezerou), tak i když ho dám do uvozovek, pak příkaz, který ho přebírá ve funkci ho neinterpretuje celý. Např. příkaz pro přejmenování - mv zdrojove_jmeno “cilove jmeno” - v terminálu proběhne v pořádku, ale stejný příkaz ve funkci zahlásí chybu. Funkci volám - jmeno_funkce zdrojove_jmeno ‘“cilove jmeno”’ a když si dám ve funkci vypsat - echo mv $1 $2 - tak se správně vypíše - mv zdrojove_jmeno “cilove jmeno”, ale samotný příkaz skončí chybou - část za mezerou - jmeno" - bere jako další argument. Poraďte prosím někdo, co dělám špatně, proč jako argument $2 nevezme celé uvozovky “cilove jmeno”? Googlil jsem, ale nic jsem zatim nevygooglil…
Díky
zdravím proměnné je potřeba dat ve volání fce i uvnitř v příkazu mv do dvojitých uvozovek.
Duvod je jednoduchy - vzdy je potreba brat v uvahu to, ze shell interpretuje to, co prave vidi. Na spusteni prikazu “mv” se v podstate pusti novy shell, ktery nejdriv projde retezce a interpretuje je, pak teprve provede prikaz. Vysledkem je prikaz
mv zdrojove_jmeno cilove jmeno
kde samozrejme cilove jmeno neni v potrebnych uvozovkach.
Reseni je nekolik - od zdvojovani uvozovek, pres pouziti “silnejich” uvozovek ’ “cilove jmeno” ', nebo zpetneho lomitka pred mezerou. Kombinovat se to da ruzne tak, aby cloveku z toho nevychazel uvozovkovy gulash.
Děkuju, poměrně jednoduché řešení, trochu se stydím - dalo se na to přijít i bez nápovědy…