Portál AbcLinuxu, 4. května 2025 23:04

Dotaz: bash - negace podmínky

11.8.2012 12:56 ZiPPy
bash - negace podmínky
Přečteno: 629×
Odpovědět | Admin
Mám funkci, která zkontroluje, zda je daný řetězec v poli: in_array() { local hay needle=$1 shift for hay; do [[ $hay == $needle ]] && return 0 done return 1 }

list=( "information" "data" "performance" );

if in_array "data" "${list[@]}"; then echo "is not in array()"; # funguje to opačně fi

Jak udělat negaci této podmínky (if in_array "data" "${list[@]}";), aniž bych musel upravit funkci in_array()?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.8.2012 16:17 Ash | skóre: 53
Rozbalit Rozbalit vše Re: bash - negace podmínky
Odpovědět | | Sbalit | Link | Blokovat | Admin
if ! in_array "data" ...
FrostyX avatar 11.8.2012 16:21 FrostyX | skóre: 27 | blog: Frostyho_blog | Olomouc
Rozbalit Rozbalit vše Re: bash - negace podmínky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Většinou se dělá negace tak, že se na začátek podmínky přidá vykřičník.
Btw příště dej kód do tagu <pre>, ať se to dá zkopírovat a vyzkoušet. ;-) Takto mi to hází syntax error.
FrostyX.cz | 1984 was not supposed to be an instruction manual.
11.8.2012 17:18 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: bash - negace podmínky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Od funkce in_array bych podle jejiho nazvu ocekaval, ze bude vracet true, kdyz dany retezec v poli najde. Takze z logiky veci bych tu funkci upravil.
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
11.8.2012 22:04 Ash | skóre: 53
Rozbalit Rozbalit vše Re: bash - negace podmínky
Ta funkce je v pořádku, vrací true. Hodnota true je reprezenována nulou. Opravit je žádoucí ten výpis:
if in_array "data" "${list[@]}"; then
  echo "is in array()";
fi
12.8.2012 05:07 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: bash - negace podmínky
Nijak jsem to nezkoumal, vychazel jsem z jeho
echo "is not in array()";
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...

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.