Portál AbcLinuxu, 17. července 2025 18:10


Dotaz: Problém s array...

17.4.2013 04:35 Chozé
Problém s array...
Přečteno: 239×
Odpovědět | Admin
Ahoj, mám kód....
#!/bin/bash
AAA=()
find -L /etc/apache2/sites-enabled -type l | while read -r FFF; do AAA+=("$FFF"); done
echo ${#AAA[@]}; # Výsledek je 0
Kde je chyba? proč nemůžu to pole naplnit názvama "bad" symlinků? Dík
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.4.2013 05:59 Martin Volf
Rozbalit Rozbalit vše Re: Problém s array...
Odpovědět | | Sbalit | Link | Blokovat | Admin
Protože ten while-cyklus běží kvůli | v samostatném procesu. Vyřešit to lze např. dočasným souborem.
17.4.2013 08:17 potato
Rozbalit Rozbalit vše Re: Problém s array...
Odpovědět | | Sbalit | Link | Blokovat | Admin
AAA=($(find -L /etc/apache2/sites-enabled -type l))
nebo to poslat do souboru + mapfile.
17.4.2013 09:01 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Problém s array...
Odpovědět | | Sbalit | Link | Blokovat | Admin

Vysvetlenie, preco sa tak deje, uz mas v prvom prispevku. Tak tu mas aj dalsie riesenie:

#!/bin/bash
declare -a AAA
declare dest=/etc/apache2/sites-enabled

while read -r FFF
do 
    AAA+=("$FFF")
done < <(find -L "$dest" -type l )

echo ${#AAA[@]}
#!/bin/bash
declare -a AAA
declare dest=/etc/apache2/sites-enabled

AAA=( $( 
find -L "$dest" -type l | while read -r FFF
do 
    echo "$FFF"
done ))

echo ${#AAA[@]}

Osobne nevidim dovod vytvarat akykolvek subor ako medzikrok k vysledku. Nie v tomto pripade.

p.s.2. Nie je nutne davat >>> ; <<< ako znacku pre koniec riadku.

17.4.2013 09:52 potato
Rozbalit Rozbalit vše Re: Problém s array...
Proč je nutné dávat tu věc po cestě do proměnné FFF a nejde naplnit pole rovnou?
17.4.2013 20:24 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Problém s array...

Praveze nie je nutne pouzit FFF. Ako si to zadal, tak je to samozrejme lepsie. Ja som povodne siel zadat tu slucku s presmerovanim a potom ma este nieco napadlo, tak som to tam napisal. Mozno dako podvedome to dopadlo tak, ze je to horsie prepisane tvoje riesenie. Ja osobne by som asi pouzil tu slucku while s presmerovanim, ak by bola moznost, ze sa v nazvoch suborov nachadzaju medzery, ci ine nestandardne znaky. Inak bez nejakeho vymyslania, najrychlejsie riesenie by bolo priamo naplnit pole pomocou find, ako si to zadal.

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.