[linux] Re: de schoonheid van bash...
Eric de Hont
eric op hobiho.nl
Di Dec 16 21:54:27 CET 2014
Op 16-12-14 om 21:24 schreef Eric de Hont:
> Op 14-12-14 om 21:59 schreef Hans Paijmans:
>> On 14/12/14 21:33, Hans Paijmans wrote:
>>> Nog een paar keer geprobeerd, maar string expansion in de shell werkt
>>> bij mij alleen vanaf de command line, niet vanuit een script. 'bad
>>> substitution'. Zowel voor bash als voor dash.
>>>
>>>
>> en dan blijkt dat "sh scriptname" of "bash scriptname" niet werkt, maar
>> "./scriptname" wel. Weet iemand hoe dat komt?
>>
Nagespeeld op Ubuntu
~/Programmeren/paai$ cat scriptname
y="12345"
echo $y
suf=${y: -3}
echo $suf
y="12345"; echo $y; suff=${y: -3}; echo $suff
echo '$SHELL en $0:' $SHELL $0
~/Programmeren/paai$ sh scriptname
12345
scriptname: 3: scriptname: Bad substitution
:~/Programmeren/paai$ bash scriptname
12345
345
12345
345
$SHELL en $0: /bin/bash scriptname
~/Programmeren/paai$ ./scriptname
12345
345
12345
345
$SHELL en $0: /bin/bash ./scriptname
Na experimenteren met diverse shebangs blijkt dat de shebang alleen
gehonoreerd wordt in de './scriptname'-variant.
Als je 'sh scriptname' of 'bash scriptname' doet wordt de shebang
overruled en wordt het script door sh (=dash) respectievelijk bash
uitgevoerd.
BTW: de keuze van de variabelenaam 'suf' doet me vermoeden dat je
extenties van filenamen wilt afslopen. Kijk dan ook eens naar 'man
basename'.
Eric
More information about the Linux
mailing list