Portál AbcLinuxu, 4. května 2025 10:30
Řešení dotazu:
#!/usr/local/bin/bash
FILES=""
a=1;
for i in `ls`; do
FILES[$a]=$i
((a=a+1))
done
echo ${FILES[@]}
kde v cykle nacita z PWD file/dirs a ulozi ich do pola, nasledne jeho obsah vypise .. alebo
#!/usr/local/bin/bash
FILES=('my' 'first' 'array')
echo ${FILES[@]}
natvrdo zadeklarovane ..
ARRAY=(`ls`)
Zdravim.
Zial, ani to riesenie nemusi byt najspravnejsie. Vid toto:
pato@debian:~/test$ ls
nebude to take lahke draha test10.file test1.file test2.file test3.file test4.file test5.file test6.file test7.file test8.file test9.file
pato@debian:~/test$ declare -a ARRAY1 ARRAY2
pato@debian:~/test$ ARRAY1=($(ls))
pato@debian:~/test$ OLDIFS="$IFS"; IFS=$'\n'; ARRAY2=($(ls)); IFS="$OLDIFS"
pato@debian:~/test$ echo ${#ARRAY1[@]}
15
pato@debian:~/test$ echo ${#ARRAY2[@]}
11
Skratka, nazvy suborov s medzerami pole nedrzi spravne. Treba nastavit IFS na novy riadok a nasledne nacitat nazvy suborov do pola. Takze riesenie je taketo, resp. funkcia:
declare -a ARRAY # je nutne deklarovat pole mimo funkcie, aby zostala zachovana pre pouzitie mimo funkcie
ReadFileNames()
{
local IFS=$'\n' # platne len v ramci funkcie, mimo nej plati stale vychodzi stav pre IFS
ARRAY=($(ls)) # nacitame nazvy suborov a pole bude respektovat aj medzery v nazve suborov
}
Jednoducho staci zavolat tuto funkciu v skripte, kde ju bude treba.
V poriadku, takze je lepsie netrapit sa vobec !!! Lebo tvoja reakcia tomu zodpoveda. Co je vacsia sanca, ze sa vyskytne v nazve suboru? Medzera ci novy riadok ? Alebo inak, mas lepsie riesenie ?
ARRAY=( * )Nenecha sa rozhodit ani medzerou ani \n.
Suhlasim, to vyzera hezky. Kazdopadne, preco si ho potom nedal skor? A si sa tu pajedil, ze co si to dovolujem ti oponovat ?
Kazdopadne, dakujem za riesenie, sa zide.
Som rad, ze si sa nepajedil, kazdopadne je lepsie pokryt nieco ako nic v tom tvojom prvom pripade.Tvoj nasledujuci bod by mohol vyzerat aj takto:
C. Neni zac, rado sa stalo.
Lebo take nieco mna nenapadlo a zo vsetkych rieseni bude ako najrychlejsie, tak aj najelegantnejsie, ako som sa uz vyjadril a podakoval.
Ten C. bod ber skor ako na odlahcenie. ;)
echo *
.. v scripte by ma to asi nenapadlo
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.