Ondersteuning > Programmeren

Bash: Fout met IFS opgelost. Maar waarom fout?

(1/1)

bart85:
In mijn script word een tekstbestand uitgelezen. Het heeft kolommen gescheiden met een tab. Ik had IFS ingesteld met:

--- Code: ---IFS='\t
--- Einde van code ---
'
Verbeterd met:

--- Code: ---IFS=$'\t
--- Einde van code ---
'

Waarvoor is dit dollar-teken nodig?

Bloom:
Zogenaamd "escaped characters" (een backslash gevolgd door een speciaal karakter) moeten geïnterpreteerd worden.
Als je '\t' opgeeft in Bash, dan is dat een backslash en een t, het wordt dus niet vertaald naar tab, wat je eigenlijk wil.
Daarom moet je dat dollarteken opgeven: $'iets' wordt vertaald naar "iets" met escaped characters geïnterpreteerd en dus een tab of een newline effectief in de string ingevuld.

bart85:
Dankjewel voor de uitleg.

Navigatie

[0] Berichtenindex

Naar de volledige versie