Portál AbcLinuxu, 17. července 2025 18:10
#!/bin/bash AAA=() find -L /etc/apache2/sites-enabled -type l | while read -r FFF; do AAA+=("$FFF"); done echo ${#AAA[@]}; # Výsledek je 0Kde 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.