Zeile für Zeile aus Datei in for

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
reox
Beiträge: 2541
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Zeile für Zeile aus Datei in for

Beitrag von reox » 30.01.2010 23:04:49

Ich schreibe in eine Datei Daten Zeile für Zeile rein. Nun möchte ich die Auslesen und in einer for Schleife auswerten.
Ich mach das derzeit so:

Code: Alles auswählen

[...]
HOSTS=( $( cat $HOME/.file ) )
num=$(( ${#HOSTS[@]} ))
HOSTS[$(($num))]="new"
[...]
for host in ${HOSTS[@]}
do
echo $host
done
[...]
so nun hab ich das Problem das in der Zeile kein Leerzeichen sein darf... Die num bekomm ich auch mit wc -l, also kann ich mir das auch sparen, problem ist eben nur: wie kann ich die datei zeile für zeile auswerten und zwar so das auch leerzeichen erlaubt sind?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Zeile für Zeile aus Datei in for

Beitrag von gms » 30.01.2010 23:42:28

Code: Alles auswählen

while read host; do
  echo "host=\"$host\""
done <"$HOME/.file"
oder wenn du die Datei vorher in das HOSTS-Array einlesen möchtest:

Code: Alles auswählen

IFS=$'\n' HOSTS=($(<$HOME/.file))
for((i=0; $i<${#HOSTS[@]}; i++)); do 
  echo "host=\"${HOSTS[$i]}\""
done
Gruß
gms

edit:
reox hat geschrieben:I
Ich mach das derzeit so:

Code: Alles auswählen

[...]
num=$(( ${#HOSTS[@]} ))
HOSTS[$(($num))]="new"
[...]
das geht auch einfacher:

Code: Alles auswählen

num=${#HOSTS[@]}
HOSTS[$num]="new"

reox
Beiträge: 2541
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: Zeile für Zeile aus Datei in for

Beitrag von reox » 31.01.2010 22:49:01

super danke das geht wunderbar!

Antworten