Fórum Root.cz

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

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

Kód: [Vybrat]
#!/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 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 13. 09. 2013, 12:06:39
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 13. 09. 2013, 12:30:52
jak bylo receno, zmen return na echo
P.
Název: Re:Oprava shell skriptu
Přispěvatel: PetrSvetr 13. 09. 2013, 14:38:03
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 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