Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: for cyklus [VYŘEŠENO]  (Přečteno 4508 krát)

3.14.TR

for cyklus [VYŘEŠENO]
« kdy: 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
Kód: [Vybrat]
for file in "/*"; do
echo "$file"
done
nicméně můj výstup v konzoli je jednořádkový
Kód: [Vybrat]
/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)
Kód: [Vybrat]
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
« Poslední změna: 11 Června 2013, 19:58:42 od 3.14.TR »
CPU Intel Core i5 2500 (4 jádra po 3.3GHz); RAM Kingston HyperX (2x2GB, DDR3); VGA nV GIGABYTE GTS450

beer

  • Host
Re:for cyklus
« Odpověď #1 kdy: 11 Června 2013, 17:14:55 »
co nějak takto:

Kód: [Vybrat]
find *|while read line; do něco "$line"; done

Vojtěch Trefný

  • Příspěvků: 9307
  • Don Quijote
Re:for cyklus
« Odpověď #2 kdy: 11 Června 2013, 17:17:06 »
Kód: [Vybrat]
for file in `ls /` ;do echo $file ;done

3.14.TR

Re:for cyklus
« Odpověď #3 kdy: 11 Června 2013, 18:44:05 »
co nějak takto:

Kód: [Vybrat]
find *|while read line; do něco "$line"; done
ano ano, díky, to funguje :) díky

Kód: [Vybrat]
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 :)
CPU Intel Core i5 2500 (4 jádra po 3.3GHz); RAM Kingston HyperX (2x2GB, DDR3); VGA nV GIGABYTE GTS450

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:for cyklus
« Odpověď #4 kdy: 11 Června 2013, 19:53:12 »
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ě :)
« Poslední změna: 11 Června 2013, 19:57:28 od GdH »

3.14.TR

Re:for cyklus
« Odpověď #5 kdy: 11 Června 2013, 19:58:19 »
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)
CPU Intel Core i5 2500 (4 jádra po 3.3GHz); RAM Kingston HyperX (2x2GB, DDR3); VGA nV GIGABYTE GTS450

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:for cyklus
« Odpověď #6 kdy: 11 Června 2013, 20:04:27 »
... ale pořád nechápu, že to na notebooku funguje (a na Gentoo taky)

Troufal bych si říct, že ani tam ne ;)

3.14.TR

Re:for cyklus
« Odpověď #7 kdy: 11 Června 2013, 20:13:20 »
... 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...
CPU Intel Core i5 2500 (4 jádra po 3.3GHz); RAM Kingston HyperX (2x2GB, DDR3); VGA nV GIGABYTE GTS450

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:for cyklus [VYŘEŠENO]
« Odpověď #8 kdy: 11 Června 2013, 21:24:08 »
Ř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 /*.

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:for cyklus [VYŘEŠENO]
« Odpověď #9 kdy: 11 Června 2013, 21:37:09 »
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

 

Provoz zaštiťuje spolek OpenAlt.