Erstatte en delstreng i bash
Hej
Hvordan erstatter man en delstreng i en variabel med en anden delstreng.
Eksempelvis skal
ORIG=hejmedmig
REPLACED=${ORIG//mig/dig}
echo $REPLACED
udskrive hejmeddig
Når jeg kører fejlen får jeg en fejl: Bad Substitution.
Er der en, der kan hjælpe?
- Log in to post comments
Kommentarer9
Det virker fint når jeg
Det virker fint når jeg kører det, med bash version 4.1.9(2)-release
Hvilken version af kører du? Bash 4.* kan mange spændende ting som du ikke kunne i 3.*, skal dog ikke kunne sige om dette er en af dem.
http://www.tldp.org/LDP/abs/h
http://www.tldp.org/LDP/abs/html/string-manipulation.html
Søg efter 'Substring Replacement'.
#2 Hvis jeg bruger ideen
#2 Hvis jeg bruger ideen derfra
stringZ=abcABC123ABCabc
echo ${stringZ/abc/xyz} # xyzABC123ABCabc
får jeg samme fejl
#1 GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu)
Jeg er ikke så meget med
Jeg er ikke så meget med på noderne, så jeg bruger bash version 3.2.48, og der virker det lige efter bogen.
Prøv at se i man bash under Parameter Substitution. Der er det hos mig beskrevet som
${parameter/pattern/string}
nøjagtig som i eksemplet, jeg henviste til. Prøv at se om der evt. skulle være ændret i syntaksen, hvilket jeg dog finder ret usansynligt.
Hvis andet glipper kan du evt. prøve at opdatere bash eller installere en ældre version. Eller nyere. Det virker åbenbart med 4.1.9.
Men pas på, hvad du gør. Hvis du får slettet bash, får du problemer.
Lukker lige det irriterende
Lukker lige det irriterende tag.
Sjovt får samme
--edit--
Nu virker det, hvordan starter du scriptet?
sh script.sh
sh script.sh
ah okay, det virker åbenbart med ./a.sh
sh script.sh
Prøv at indsætte
#!/bin/bash
Som første linie i dit bash script
Prøv herefter
./script.sh
Lavede samme fejl 40. Hvis
Lavede samme fejl 40. Hvis du bruger sh, så benytter den shell, og er ligeglad med hvad der står i starten af filen.
Du kan også bruge bash filnavn.