Portál AbcLinuxu, 7. května 2025 05:39

Dotaz: NOT IN v bash?

6.10.2011 10:27 Jiří Lisický | skóre: 31 | blog: JIL_blog | Olomouc
NOT IN v bash?
Přečteno: 190×
Odpovědět | Admin
Dá se v bash nějak elegantně napsat podmínka NOT IN? Příklad:

for (( ii=0 ; $ii <= 99 ; ii++ )) ; do
    for xx in a b c d e f; do
	# vyjímky - přeskočit
	if [ "$xx$ii" == "c0" ]; then
            continue
        fi
        if [ "$xx$ii" == "d7" ]; then
            continue
        fi
	
	echo zpracování $xx$ii

    done
done
Abych nemusel psát na každou vyjímku extra podmínku. Něco takového:
for (( ii=0 ; $ii <= 99 ; ii++ )) ; do
    for xx in a b c d e f; do
	# vyjímky - přeskočit
	if "$xx$ii" NOT IN ("c0", "d7"); then <-- pseudokód
            continue
        fi
	
	echo zpracování $xx$ii

    done
done

Ř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

6.10.2011 10:48 voda | skóre: 28
Rozbalit Rozbalit vše Re: NOT IN v bash?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mohl by fungovat case:
case "$xx$ii" in
  "c0")
  "d7")
    continue
    ;;
  *)
    ;;
esac
6.10.2011 10:51 chrono
Rozbalit Rozbalit vše Re: NOT IN v bash?
prípadne
case "$xx$ii" in
  "b0"|"d7")
    continue;;
esac
frEon avatar 6.10.2011 11:02 frEon | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: NOT IN v bash?
Odpovědět | | Sbalit | Link | Blokovat | Admin
nejlip asi takhle:
kleptor@morrigan:~:0:$ a=c0
kleptor@morrigan:~:0:$ [[ -z ${a#@(c0|d7)} ]]
kleptor@morrigan:~:0:$ echo $?
0
kleptor@morrigan:~:0:$ a=ahoj
kleptor@morrigan:~:0:$ [[ -z ${a#@(c0|d7)} ]]
kleptor@morrigan:~:1:$ echo $?
1
Talking about music is like dancing to architecture.
6.10.2011 11:40 Jiří Lisický | skóre: 31 | blog: JIL_blog | Olomouc
Rozbalit Rozbalit vše Re: NOT IN v bash?
Tohle je chuťovčička. Chvíli jsem se trápil s manuálem než našel jak to vlastně funguje. Hezké, naučil jsem se zase něco nového.

Na druhou stranu poněkud kryptické, dám přednost tomu case. Abych taky po nějaké době věděl co to dělá ;-)

Všem přispěvatelům děkuji

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.