2017-07-15 3 views
0

Ich habe ein Problem mit dem Lesen einer Datei Zeile für Zeile mit Bash-Skript. Hier ist das Skript:Wie liest man Zeile für Zeile im Bash-Skript?

#!/bin/bash 

file="cam.txt" 

while IFS=: read -r xf1 xf2 xf3 
do 
    printf 'Loop: %s %s %s\n' "$xf1" "$xf2" "$xf3" 
    f1=$xf1 
    f2=$xf2 
    f3=$xf3 
done < $file 
printf 'After: %s %s %s\n' "$f1" "$f2" "$f3" 

Hier ist cam.txt:

192.168.0.159 
554 
554 

Hier ist der Ausgang:

Loop: 192.168.0.159 
Loop: 554 
Loop: 554 
After: 554 

Was könnte das Problem sein?

+0

zeigt eine Probe Ihrer Datei . – Mat

+0

Ich habe hinzugefügt. Danke für Ihre Aufmerksamkeit @Mat – voyvoda

+1

Jetzt ist es unklar, was Sie versuchen zu tun. Die Ausgabe entspricht dem Code und der Eingabedatei. Bitte erläutern Sie genauer, was Sie erreichen möchten. – Mat

Antwort

-1

Ihr Code führt mich zu der Annahme, dass Sie jede Zeile in einer Variablen haben möchten.

dieses Skript Versuchen (Ich weiß, das einfache und schöner gemacht werden kann, aber dies ist ein einfaches und gut lesbar Beispiel):

#!/bin/bash 
file="cam.txt" 

while read -r line 
do 
    printf 'Line: %s\n' "$line" 

    current=$line 
    last=$current 
    secondlast=$last 

    printf 'Loop: %s %s %s\n' "$current" "$last" "$secondlast" 
done < $file 

printf 'After: %s %s %s\n' "$current" "$last" "$secondlast" 

Einfachere Version:

{ read -r first; read -r second; read -r third; } <cam.txt 
printf 'After: %s %s %s\n' "$first" "$second" "$third" 
Verwandte Themen