Oprava shell skriptu

Martina

Oprava shell skriptu
« kdy: 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.
« Poslední změna: 13. 09. 2013, 10:36:08 od Petr Krčmář »


wamba

Re:Oprava shell skriptu
« Odpověď #1 kdy: 13. 09. 2013, 11:04:32 »

Martina

Re:Oprava shell skriptu
« Odpověď #2 kdy: 13. 09. 2013, 12:06:39 »
místo return dej echo
viz např. http://www.linuxjournal.com/content/return-values-bash-functions
Jenže to se mi vypíše i na obrazovku, a to nechci! ;-)

petr

Re:Oprava shell skriptu
« Odpověď #3 kdy: 13. 09. 2013, 12:30:52 »
jak bylo receno, zmen return na echo
P.

PetrSvetr

Re:Oprava shell skriptu
« Odpověď #4 kdy: 13. 09. 2013, 14:38:03 »
místo return dej echo
viz např. 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.


Mira

Re:Oprava shell skriptu
« Odpověď #5 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