Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Martina kdy 13. 09. 2013, 10:30:38

Název: Oprava shell skriptu
Přispěvatel: Martina kdy 13. 09. 2013, 10:30:38
Ahoj, poradí please někdo funkční řešení na tomto principu?

#!/bin/bash
getval()
{
     VAR=$1;
     return $VAR;
}

N=$(getval "10");
T=$(getval "Kč");

echo "${N}${T}"; # Očekávaný výsledek: 10Kč

exit 0


už vážně nevím jak to udělat.....  Děkuji, M.
Název: Re:Oprava shell skriptu
Přispěvatel: wamba kdy 13. 09. 2013, 11:04:32
místo return dej echo
viz např. http://www.linuxjournal.com/content/return-values-bash-functions (http://www.linuxjournal.com/content/return-values-bash-functions)
Název: Re:Oprava shell skriptu
Přispěvatel: Martina kdy 13. 09. 2013, 12:06:39
Citace od: wamba kdy 13. 09. 2013, 11:04:32
místo return dej echo
viz např. http://www.linuxjournal.com/content/return-values-bash-functions (http://www.linuxjournal.com/content/return-values-bash-functions)
Jenže to se mi vypíše i na obrazovku, a to nechci! ;-)
Název: Re:Oprava shell skriptu
Přispěvatel: petr kdy 13. 09. 2013, 12:30:52
jak bylo receno, zmen return na echo
P.
Název: Re:Oprava shell skriptu
Přispěvatel: PetrSvetr kdy 13. 09. 2013, 14:38:03
Citace od: Martina kdy 13. 09. 2013, 12:06:39
Citace od: wamba kdy 13. 09. 2013, 11:04:32
místo return dej echo
viz např. http://www.linuxjournal.com/content/return-values-bash-functions (http://www.linuxjournal.com/content/return-values-bash-functions)
Jenže to se mi vypíše i na obrazovku, a to nechci! ;-)
samotne echo uvnitr te funkce nic vypisovat nebude, IMHO.
Ted uz vis, ze funkce v bash mohou vracet pouze ciselne hodnoty - co takhle zmenit spis logiku skriptu, nez se snazit zmenit filozofii interpretu?
Dalsi moznosti je globalni promenna, pripadne asociativni pole, kde index bude ciselny a k nemu priradis nejaky string.
Bash neni klasicky programovaci jazyk a chtit v nem "programovat" neni moc efektivni. Na druhou stranu pro nektere veci je mnohem efektivnejsi nez klasicke programovani ve vyssich jazycich.
Název: Re:Oprava shell skriptu
Přispěvatel: Mira kdy 13. 09. 2013, 15:24:19
pokud chces v bash vracet z funkce neco jineho nez cislo, tak muze pres eval:

#!/bin/bash
getval()
{
     VAR=$1;
     eval $2=$VAR;
}

getval "10" navratova1
getval "Kc" navratova2

echo "${navratova1}${navratova2}"; # Očekávaný výsledek: 10Kč

exit 0