Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: 3.14.TR 11 Června 2013, 16:44:00
-
ahoj ahoj,
prosím o radu, podle všech možných tutoriálů by měl následující kód napsal na každou řádku jeden soubor/složku v kořeni
for file in "/*"; do
echo "$file"
done
nicméně můj výstup v konzoli je jednořádkový
/bin /boot /cdrom /dev /etc /home /initrd.img /initrd.img.old /lib /lib64 /lost+found /media /mnt /opt /proc /root /run /sbin /selinux /srv /sys /tmp /usr /var /vmlinuz /vmlinuz.old
protože se do proměnné $file uloží celý tenhle string najednou (důkaz tady)
for file in "/*"; do
echo "$file"
break
done
tím celý for ztrácí smysl, potřebuju postupně přistupovat k jednotlivým souborům
nefunguje ani z terminálu ani ze skriptu, ovšem na Gentoo a FreeBSD to jde
Mám počeštěné Ubuntu 12.10
Díky moc za rady
-
co nějak takto:
find *|while read line; do něco "$line"; done
-
for file in `ls /` ;do echo $file ;done
-
co nějak takto:
find *|while read line; do něco "$line"; done
ano ano, díky, to funguje :) díky
for file in `ls /` ;do echo $file ;done
ls se snažím vyhnout - resp ho nahradit tímhle programem (nesmějte se mi, je to do školy)
otázkou zůstává, proč nefunguje ten cyklus standartně, jako kdekoli jinde (viz výše zmíněné systémy nebo můj notebook se stejnou verzí Ubuntu)
každopádně díky za tipy :)
-
otázkou zůstává, proč nefunguje ten cyklus standartně, jako kdekoli jinde (viz výše zmíněné systémy nebo můj notebook se stejnou verzí Ubuntu)
Nesmíš dát ten regulární výraz do uvozovek. Ve tvém případě sice k expanzi dojde, ale vytvoří se jen jeden řádek, cyklus bude mít je jeden průchod.
Edit: Nečetl jsem to poprvé pořádně, takže druhou větu jsem psal zbytečně :)
-
otázkou zůstává, proč nefunguje ten cyklus standartně, jako kdekoli jinde (viz výše zmíněné systémy nebo můj notebook se stejnou verzí Ubuntu)
Nesmíš dát ten regulární výraz do uvozovek. Ve tvém případě sice k expanzi dojde, ale vytvoří se jen jeden řádek, cyklus bude mít je jeden průchod.
Edit: Nečetl jsem to poprvé pořádně, takže druhou větu jsem psal zbytečně :)
jéééé, díky, moje blbost, je to jasné... ale pořád nechápu, že to na notebooku funguje (a na Gentoo taky)
-
... ale pořád nechápu, že to na notebooku funguje (a na Gentoo taky)
Troufal bych si říct, že ani tam ne ;)
-
... ale pořád nechápu, že to na notebooku funguje (a na Gentoo taky)
Troufal bych si říct, že ani tam ne ;)
ale jo, mám ssh do školy...
-
Řek bych že jádro pudla bude v těch uvozovkách. Ale i tak mi to vrtá hlavou, protože "/*" mi všude expanduje prostě na /*.
-
http://mywiki.wooledge.org/BashPitfalls#pf1