|
| shell script fejler efter portering Fra : carsten |
Dato : 22-10-07 20:13 |
|
Hej NG
nedenstående shell script fejler i linje 3
../mpasm: 3: Syntax error: Bad substitution
det er undre mig er at det indtil dato har fungeret upåklagligt på en
Mandriva, men nu er det flyttet over på en Kubuntu, og der fejler det
den dybere mening med linje 2-4 er at fjerne /home/carsten/ fra den noget
længre sti,DIR
er der en der lige kan se misæren !!
/Carsten
#!/bin/sh
echo ${DIR:=${PWD}}
echo ${DIR1:=${DIR/\/home\/carsten/}}
echo ${DIR2:=${DIR1//\//\\}}
echo ${A2:=${1%%.*}}
pause
cat > /usr/lib/freedos/asm.bat << EOF
d:
cd ${DIR2}
asm $A2
EOF
rm -r $A2.cod
rm -r $A2.err
rm -r $A2.hex
rm -r $A2.lst
cp $A2.004 $A2.005
cp $A2.003 $A2.004
cp $A2.002 $A2.003
cp $A2.001 $A2.002
cp $A2.asm $A2.001
dosemu
| |
Adam Sjøgren (22-10-2007)
| Kommentar Fra : Adam Sjøgren |
Dato : 22-10-07 20:32 |
|
On Mon, 22 Oct 2007 21:12:33 +0200, carsten wrote:
> nedenstående shell script fejler i linje 3
> ./mpasm: 3: Syntax error: Bad substitution
> det er undre mig er at det indtil dato har fungeret upåklagligt på en
> Mandriva, men nu er det flyttet over på en Kubuntu, og der fejler det
> den dybere mening med linje 2-4 er at fjerne /home/carsten/ fra den noget
> længre sti,DIR
> er der en der lige kan se misæren !!
/bin/sh er et link til dash per default på nyere Ubuntu'er. Du bruger
bash-syntax i dit script, så du bør starte det med #!/bin/bash
> #!/bin/sh
> echo ${DIR:=${PWD}}
> echo ${DIR1:=${DIR/\/home\/carsten/}}
[...]
Mvh.
--
"On the quiet side. Somewhat peculiar. A good Adam Sjøgren
companion, in a weird sort of way." asjo@koldfront.dk
| |
carsten (22-10-2007)
| Kommentar Fra : carsten |
Dato : 22-10-07 21:03 |
|
Adam Sjøgren wrote:
> /bin/sh er et link til dash per default på nyere Ubuntu'er. Du bruger
> bash-syntax i dit script, så du bør starte det med #!/bin/bash
Tak for hjælpen,
ja der skal ikke meget til at vælte læset
/Carsten
| |
Jørgen Heesche (22-10-2007)
| Kommentar Fra : Jørgen Heesche |
Dato : 22-10-07 21:00 |
|
carsten wrote:
> Hej NG
> nedenstående shell script fejler i linje 3
> ./mpasm: 3: Syntax error: Bad substitution
>
> det er undre mig er at det indtil dato har fungeret upåklagligt på en
> Mandriva, men nu er det flyttet over på en Kubuntu, og der fejler det
> den dybere mening med linje 2-4 er at fjerne /home/carsten/ fra den noget
> længre sti,DIR
>
> er der en der lige kan se misæren !!
>
> /Carsten
>
>
> #!/bin/sh
> echo ${DIR:=${PWD}}
> echo ${DIR1:=${DIR/\/home\/carsten/}}
> echo ${DIR2:=${DIR1//\//\\}}
> echo ${A2:=${1%%.*}}
> pause
> cat > /usr/lib/freedos/asm.bat << EOF
> d:
> cd ${DIR2}
> asm $A2
> EOF
> rm -r $A2.cod
> rm -r $A2.err
> rm -r $A2.hex
> rm -r $A2.lst
> cp $A2.004 $A2.005
> cp $A2.003 $A2.004
> cp $A2.002 $A2.003
> cp $A2.001 $A2.002
> cp $A2.asm $A2.001
>
> dosemu
>
I Mandriva 2007 er bin/sh et symbolsk link til bash, derfor virker
scriptet i Mandriva.
I Kubuntu er /bin/sh nok noget andet. Prøv ls -l /bin/sh
--
Med venlig hilsen
Jørgen Heesche
mailto:heesche@webspeed.dk
| |
Christian Laursen (22-10-2007)
| Kommentar Fra : Christian Laursen |
Dato : 22-10-07 21:27 |
|
carsten <spam@spam.dk> writes:
> Hej NG
> nedenstående shell script fejler i linje 3
> ./mpasm: 3: Syntax error: Bad substitution
>
> det er undre mig er at det indtil dato har fungeret upåklagligt på en
> Mandriva, men nu er det flyttet over på en Kubuntu, og der fejler det
> den dybere mening med linje 2-4 er at fjerne /home/carsten/ fra den noget
> længre sti,DIR
Følgende ser ud til at gøre noget i den stil med min /bin/sh på FreeBSD:
echo ${DIR1:=${DIR#/home/carsten/}}
--
Christian Laursen
| |
Jørgen Heesche (23-10-2007)
| Kommentar Fra : Jørgen Heesche |
Dato : 23-10-07 09:51 |
|
Christian Laursen wrote:
> carsten <spam@spam.dk> writes:
>
>> Hej NG
>> nedenstående shell script fejler i linje 3
>> ./mpasm: 3: Syntax error: Bad substitution
>>
>> det er undre mig er at det indtil dato har fungeret upåklagligt på en
>> Mandriva, men nu er det flyttet over på en Kubuntu, og der fejler det
>> den dybere mening med linje 2-4 er at fjerne /home/carsten/ fra den noget
>> længre sti,DIR
>
> Følgende ser ud til at gøre noget i den stil med min /bin/sh på FreeBSD:
>
> echo ${DIR1:=${DIR#/home/carsten/}}
>
Du skal være opmærksom på, at linux-distributionerne ikke har den
originale Bourne Shell sh. Men desværre oprettes der et overflødigt
link: /bin/sh -> bash (Bourne Again Shell). Men undertiden er der
linket til en anden shell, og så går det galt, hvis man har et
bash-script og indleder med #!/bin/sh
--
Med venlig hilsen
Jørgen Heesche
mailto:heesche@webspeed.dk
| |
Christian Laursen (23-10-2007)
| Kommentar Fra : Christian Laursen |
Dato : 23-10-07 16:25 |
|
Jørgen Heesche <heesche@webspeed.dk> writes:
> Christian Laursen wrote:
>
>> Følgende ser ud til at gøre noget i den stil med min /bin/sh på FreeBSD:
>>
>> echo ${DIR1:=${DIR#/home/carsten/}}
>>
> Du skal være opmærksom på, at linux-distributionerne ikke har den
> originale Bourne Shell sh. Men desværre oprettes der et overflødigt
> link: /bin/sh -> bash (Bourne Again Shell). Men undertiden er der
> linket til en anden shell, og så går det galt, hvis man har et
> bash-script og indleder med #!/bin/sh
Ja, det er jeg skam klar over.
Tanken var, at hvis det virker i /bin/sh på min FreeBSD, som ikke er
bash, kunne det også tænkes at virke på Ubuntu's /bin/sh, som heller
ikke er bash.
Om det så gør, ved jeg ikke...
--
Christian Laursen
| |
Jørgen Heesche (23-10-2007)
| Kommentar Fra : Jørgen Heesche |
Dato : 23-10-07 21:24 |
|
Christian Laursen wrote:
> Jørgen Heesche <heesche@webspeed.dk> writes:
>
>> Christian Laursen wrote:
>>
>>> Følgende ser ud til at gøre noget i den stil med min /bin/sh på FreeBSD:
>>>
>>> echo ${DIR1:=${DIR#/home/carsten/}}
>>>
>> Du skal være opmærksom på, at linux-distributionerne ikke har den
>> originale Bourne Shell sh. Men desværre oprettes der et overflødigt
>> link: /bin/sh -> bash (Bourne Again Shell). Men undertiden er der
>> linket til en anden shell, og så går det galt, hvis man har et
>> bash-script og indleder med #!/bin/sh
>
> Ja, det er jeg skam klar over.
>
> Tanken var, at hvis det virker i /bin/sh på min FreeBSD, som ikke er
> bash, kunne det også tænkes at virke på Ubuntu's /bin/sh, som heller
> ikke er bash.
>
> Om det så gør, ved jeg ikke...
>
Sikkert ikke. Der findes en del shell-versioner: sh, csh, ksh, bash
osv. men syntaxen varierer.
--
Med venlig hilsen
Jørgen Heesche
mailto:heesche@webspeed.dk
| |
Peter Makholm (23-10-2007)
| Kommentar Fra : Peter Makholm |
Dato : 23-10-07 10:22 |
|
Jørgen Heesche <heesche@webspeed.dk> writes:
> Du skal være opmærksom på, at linux-distributionerne ikke har den
> originale Bourne Shell sh.
Er der nogen unix'er der gør det i vore dage? Der er bare nogle
implementationer der er mere kræsne og ikke-forudkompatible end andre.
> Men desværre oprettes der et overflødigt
> link: /bin/sh -> bash (Bourne Again Shell).
Det link er absolut ikke overflødigt. På en unix skal der være en
/bin/sh der implementere mindst hvad Posix foredkriver en /bin/sh skal
kunne. Det gør bash.
Problemet er at bash kaldt som /bin/sh implementere flere features en
nødvendigt og så går det galt når folk der er vandt til en bash /bin/sh
flytter over til maskiner med mere restriktive /bin/sh'er.
//Makholm
| |
Thorbjørn Ravn Ander~ (23-10-2007)
| Kommentar Fra : Thorbjørn Ravn Ander~ |
Dato : 23-10-07 18:55 |
|
Peter Makholm <peter@makholm.net> writes:
> Er der nogen unix'er der gør det i vore dage? Der er bare nogle
<firestemmigt mandskor>
Soooooooooooooooooooooooooooooooolariiiiis
</mandskor>
Heldigvis kan man skrive bash, man må IKKE lave det om.
> Problemet er at bash kaldt som /bin/sh implementere flere features en
Troede den gik i "dum som en sh"-mode, men det har jeg nok læst forkert.
--
Thorbjørn Ravn Andersen
| |
Peter Makholm (24-10-2007)
| Kommentar Fra : Peter Makholm |
Dato : 24-10-07 05:17 |
|
Jørgen Heesche <heesche@webspeed.dk> writes:
> Sikkert ikke. Der findes en del shell-versioner: sh, csh, ksh, bash
> osv. men syntaxen varierer.
Men der er kun en af disse der ikke bare en lille smule forsøger at
være bourne shell kompatibel.
//Makholm
| |
|
|