ursprünglichen IFS wiederherstellen

P

Peter84

Grünschnabel
Hi,
Ich kenn mich nicht besonders aus mit Shell-Programmierung und hab deswegen auf der bash den Internal Field Separator geändert, ohen ihn vorher in einer anderen Variablen zu sichern. Meine Frage nun, wie kann ich dem IFS die ursprüngliche Einstellung (leerzeichen, tab, newline) wieder zuweisen?
 
Hi, und willlkommen im Board

Aus der Manpage von Bash

IFS The Internal Field Separator that is used for word splitting
after expansion and to split lines into words with the read
builtin command. The default value is ``<space><tab><new-
line>''.

Ich vermute, das hilft dir weiter.
 
Wird der nicht spätestens nach dem reboot wieder gesetzt ?
 
Vielen Dank erstmal, aber bislang haben mir die Vorschläge noch nicht weiterhelfen können. Scheint wohl wirklich ein größeres Problem zu sein. Falls noch einem was einfällt wär ich dankbar... :-)
 
Wieso hilft Dir mein Hinweis nicht weiter?

Code:
[~]$ A=123
[~]$ IFS=2
[~]$ echo $A
1 3
[~]$ unset IFS
[~]$ echo $A
123

edit:

Code:
[~]$ A="123 123"
[~]$ IFS=2
[~]$ set $A
[~]$ echo $1
1
[~]$ unset IFS
[~]$ set $A
[~]$ echo $1
123
 
Zuletzt bearbeitet:
Sorry, das unset funktioniert bei mir nicht (mehr), kann damit nicht den ursprünglichen IFS wiederherstellen
 
Welche Shell nutzt Du? Habe oben irgendwas mit Bash gelesen (mein Versehen)...
 
Peter84 schrieb:
Vielen Dank erstmal, aber bislang haben mir die Vorschläge noch nicht weiterhelfen können. Scheint wohl wirklich ein größeres Problem zu sein. Falls noch einem was einfällt wär ich dankbar... :-)

Wo ist das Problem?
Woran machst du denn deine Aussage fest?
Was funktioniert denn nicht wie erwartet?
Gib doch mal ein Beispiel von deinen Code, der mit dem vermeindlichen falschen IFS nicht funktioniert.
Außerdem wird diese Variable mit jeder neuen Shell neu inititialisiert.
Selbst nach Verlassen einer Subshell steht dieser wieder auf dem default Wert.

Eventuell solltest du doch mal in die man von der bash sehen.

Gruß Wolfgang
 
Ok, danke, das Problem hat sich erledigt - wie gesagt, bin nicht der große Spezialist in der Shell-Programmierung! Hab immer mit
Code:
echo $IFS | od -bc
kontrolliert, ob der IFS wieder richtig gesetzt ist - und dabei halt die Anführungszeichen vergessen *schäm*. Folglich müsste er also nach jedem Neustart der Shell auch wieder auf den Ausgangswert gesetzt werden, denke ich. Vielleicht hats aber auch nur einfach mit unset geklappt. Aber nochmals vielen Dank für euer Mitwirken!
 
Zuletzt bearbeitet:
Na klar ist alles nach einem Reboot wieder weg. Wenn du eine Variablenzuweisung in der Shell machst wird das im Speicher abgebildet und gilt nur so lange die Shell aktiv ist. Normalerweise hätte ein erneuter Aufruf der Shell auch genügt. Bootfest variablen setzen - dazu müssen die Daten schon auf die Platte geschrieben werden z.B. in eine Datei, welche beim Start der Shell dann erst gelesen werden a la .profile bzw. export $PATH....
 

Ähnliche Themen

Problem mit Apache2 + MySQL Server

[HowTo] TeamSpeak 2 - RC2 - Server (Deutsch/Englisch)

Zurück
Oben