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: stefanh 14 Srpna 2010, 15:51:59

Název: Bash readline odstranuje mezery
Přispěvatel: stefanh 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
Název: Re: Bash readline odstranuje mezery
Přispěvatel: Kedrigern 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).
Název: Re: Bash readline odstranuje mezery
Přispěvatel: stefanh 15 Srpna 2010, 14:22:12
Funguje to.  Díky moc.