Mere
Opdele streng i et array i Bash
I et Bash-script vil jeg gerne opdele en linje i stykker og gemme dem i et array.
Linjen:
Paris, France, Europe
Jeg vil gerne have dem i et array som dette:
array[0] = Paris
array[1] = France
array[2] = Europe
Jeg vil gerne bruge simpel kode, kommandoen's hastighed er ligegyldig. Hvordan kan jeg gøre det?
571
3
Her er en måde at gøre det på uden at indstille IFS:
Ideen er at bruge strengudskiftning:
til at erstatte alle match af $substring med hvidt mellemrum og derefter bruge den erstattede streng til at initialisere et array:
Bemærk: Dette svar gør brug af [split+glob-operatoren] (https://unix.stackexchange.com/q/108963/79743). For at forhindre ekspansion af visse tegn (såsom
*
) er det således en god idé at sætte globbing på pause for dette script.Nogle gange er det sket for mig, at den metode, der er beskrevet i det accepterede svar, ikke virkede, især hvis separatoren er en vogn retur.
I de tilfælde løste jeg det på denne måde: