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
-
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
-
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:
#!/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).
-
Funguje to. Díky moc.