Portál AbcLinuxu, 10. května 2025 05:30

Dotaz: BASH otestovani navratove hodnoty funkce

18.3.2014 15:09 nicco | skóre: 7
BASH otestovani navratove hodnoty funkce
Přečteno: 238×
Odpovědět | Admin

Ahoj,

jak mam prosim otestovat numerickou navratovou hodnotu funkce v Bashi?

Google nasel tohle, ale to je myslim posouzeni jako retezec, ne cislo:

if [[ "$(func arg)" != "0" ]]

Pro cisla bych si predstavoval:

if (( $(func arg) != 0 ))

ale to skonci chybou.

S promennou to normalne funguje:

if (( $var != 0 ))

 

Diky


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (nicco (tazatel))
18.3.2014 16:08 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: BASH otestovani navratove hodnoty funkce
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je to v zásadě putna, textově:
if [[ "$?" != "0" ]]; then
  exit 1
fi
nebo jako číslo:
if [[ $? -ne 0 ]]; then
  exit 1
fi
man test, i když zde to je built-in test v Bashu.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
19.3.2014 11:49 nicco | skóre: 7
Rozbalit Rozbalit vše Re: BASH otestovani navratove hodnoty funkce

Ano diky, to funguje a funguje to v ruznych kombinacich, asi proto, ze Bash zna jenom string

fce "10"

if [[ $? -eq "10" ]] 

fce 10

if [[ $? -eq "10" ]]

fce "10"

if (( $? == 10 ))

fce 10

if (( $? == 10 ))

19.3.2014 12:15 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: BASH otestovani navratove hodnoty funkce
Všechno je jenom string když je to napsaný text, ale rozhodující je, jak se s ním pak pracuje, takže věta „Bash zna jenom string“ je velmi-velmi zavádějící.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
19.3.2014 12:54 nicco | skóre: 7
Rozbalit Rozbalit vše Re: BASH otestovani navratove hodnoty funkce

Funkce mi vrati:

return 10

a to jsem potom otestoval v podmince a vsechny 4 vratily spravy vysledek

19.3.2014 14:33 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: BASH otestovani navratove hodnoty funkce
Příklady jsou de-facto jen dva, protože jsou dva a dva stejné a ani jeden z nich neporovnává string, ale oba číslo, textově to porovnáš pomocí [[ "$?" == "10" ]].
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
19.3.2014 16:13 nicco | skóre: 7
Rozbalit Rozbalit vše Re: BASH otestovani navratove hodnoty funkce
aha diky
18.3.2014 16:09 potato
Rozbalit Rozbalit vše Re: BASH otestovani navratove hodnoty funkce
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jako
if func args; then
  ...
fi
?
19.3.2014 11:51 nicco | skóre: 7
Rozbalit Rozbalit vše Re: BASH otestovani navratove hodnoty funkce
Ja jsem chtel otestovat i jinou hodnotu nez jenom true/false.
Tarmaq avatar 18.3.2014 16:09 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: BASH otestovani navratove hodnoty funkce
Odpovědět | | Sbalit | Link | Blokovat | Admin
zajima te asi operator -ne viz. man test Tedy
if [[ "$(func a)" -ne 0 ]]
Don't panic!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.