Portál AbcLinuxu, 4. listopadu 2025 22:18
#!/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
AAA=($(find -L /etc/apache2/sites-enabled -type l))nebo to poslat do souboru +
mapfile.
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.
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.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.