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: Bash readline odstranuje mezery  (Přečteno 2090 krát)

stefanh

  • Návštěvník
  • Příspěvků: 2
Bash readline odstranuje mezery
« kdy: 14 Srpna 2010, 15:51:59 »
Ahojky,

potrebuji radu, nebo vysvetleni.
Mam ve skriptu jednoduchy cyklus, ktery cte radky z textoveho souboru.
Skript bezi normalne az na to, ze pokud jsou na zacatku radku vstupniho souboru mezery tak je odstrani.
Promenna $line na zacatku nema zadne mezery. Je mozne, ze mi neco uchazi...  :-)
Jinymi slovy, pokud je v souboru radek: "  ahoj"
promenna $line obsahuje: "ahoj".

FILENAME="textovysoubor"
while read line
do
echo $line
done < $FILENAME

Kedrigern

Re: Bash readline odstranuje mezery
« Odpověď #1 kdy: 14 Srpna 2010, 17:01:45 »
To bude tím, že read je příkaz pro čtení proměnných a používá se takto:
1) read x y z
2) Následně je v $x vše do prvního IFS (internal field separator), $y vše do dalšího IFS a v $z zbytek

IFS je oddělovač, který defaultně má nastavené bílé znaky (mezery, tabulátory) a konce řádku (které ignoruje, když řádek ukončíš pomocí \).

Zkusil jsem tohle:
Kód: [Vybrat]
#!/bin/sh

soubor="txt.txt";

echo "Pomoci cat:";

cat "$soubor" ;

echo "Pomoci while:";

#IFS="\n";

while read line; do
 echo "$line";
done < $soubor

Když odkomentuješ #IFS="\n";, tak to jede, jak chceš ty. Otázkou je zda ti to neudělá bordel jinde (v něčem komplexnějším).

stefanh

  • Návštěvník
  • Příspěvků: 2
Re: Bash readline odstranuje mezery
« Odpověď #2 kdy: 15 Srpna 2010, 14:22:12 »
Funguje to.  Díky moc.

 

Provoz zaštiťuje spolek OpenAlt.