Der typische Fall ist IFS= read
.
Das Thema wird in diesem Thread sehr gut erklärt:
Warum ist das Setzen einer Variablen vor einem Befehl in bash legal?
Um ein vollständiges Bild zu erhalten, wäre ich Ihnen sehr dankbar, wenn Sie erklären könnten, warum das folgende Skript nicht wie erwartet funktioniert.
my_script
::
#!/bin/bash
echo "$var1"
echo -n "$IFS" | xxd -p
echo "$var2"
exit 0
Aufruf my_script
:
var1=foo IFS= var2=bar my_script
Ausgabe:
foo
20090a
bar
Wie Sie sehen können, IFS
ist unverändert, immer noch als Standard festgelegt.
Wie kommt read
der Brauch, IFS
wenn er als aufgerufen wird IFS= read
?
Vielen Dank im Voraus
bash
environment-variables
read
Claudio
quelle
quelle
Antworten:
Das Beispiel wird nicht
IFS
im Skript festgelegt, da bash den ImportIFS
aus der Umgebung nicht zulässt. Dies geht aus einem Kommentar invariables.c
:Integrierte Befehle und Nicht- Skript- Verwendungen erhalten
IFS
natürlich die Zuordnung zu , aber denken Sie daran, dass diesIFS
nur für die Wortteilung gilt :quelle