/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
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

Søg
Reklame
Statistik
Spørgsmål : 177548
Tips : 31968
Nyheder : 719565
Indlæg : 6408799
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste