[ SHELL ] 2 mal IFS in geschachtelten while Schleifen anpassen

peace_maker

Cadet 4th Year
Registriert
Dez. 2010
Beiträge
108
Hallo Leute,
ich bin dabei ein kleines Script zu schreiben und stecke gerade fest. Vielleicht kann mir jemand damit weiterhelfen.

Mein Script soll aus einer CSV-Datei=$1 (Geburtsdatum,Geschlecht,Anrede,Vorname,Nachname) herauslesen und ausgeben ob diese Person heute Geburtstag hat.

Ich habe nur das Problem, dass in meinen geschachtelten While-Schleifen sich die unterschiedlichen IFS (Internal Field Separator - genutzt zur Wörtertrennung) gegenseitig stören und ich diese leider nicht innerhalb der While-Schleifen unterbringen kann. Ich würde gerne wissen, ob es eine Möglichkeit gibt die IFS direkt der Schleife zuzuweisen.

Bin auch für andere Lösungsvorschläge offen. ;)
Code:
today=`date --rfc-3339=date`
IFS=","
while read datum gender sie vor nach
do
	echo "Datum=$datum"
	echo "Geschlecht=$gender"
	echo "Anrede=$sie"
	echo "Vorname=$vor"
	echo "Nachname=$nach"
	
	IFS="-"
	while read year month day
	do
		if [ $month -eq $t_month ]
		then
			if [ $day -eq $t_day ]
			then
				old=$(($t_year-$year))
				echo "Heute ist $vor $nach $old geworden !"
			fi		
		fi	
	done <<<"$datum"

done < $1
Ergänzung ()

Hab eine Lösung gefunden, man kann den IFS direkt in die While Schleife setzen und dadurch Schachtelungen richtug durchlaufen.

z.B.:
Code:
while IFS=";" read wert1
do
    echo $wert1
   
    while IFS="+" read wert2
    do
        echo $wert2
    done

done
Gruß
peace_maker
 
Zuletzt bearbeitet:
Also es könnte vielleicht unset IFS helfen nach der inneren Schleife und neu setzen auf das ,
Und trennt der mit dem - den Tag dann nicht bis zum Ende der Zeile? Also incl Kommas Geschlecht Anrede Vorname und Nachname?
 
Zurück
Oben