[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