Argumente mit Leerzeichen an ein Skript übergeben

Post Reply
Message
Author
Rossi

Argumente mit Leerzeichen an ein Skript übergeben

#1 Post by Rossi »

Hallo,

wie kann ich einen String mit Leerzeichen als ein Argument übergeben ? Zum Beispiel:

brennen "/mnt/this is a test"

wobei "brennen" das aufzurufende bash Skript wäre und "/mnt/this is a test" das Argument $1. Konkret ein Dateiname.

Das Problem ist, das trotz Anführungszeichen um das Argument nur der erste Teil erkannt wird (bis zum ersten Leerzeichen). Der Nachfolgende Teil ("is") wäre schon $2. Und das soll nicht.

greg
Posts: 16
Joined: 22. Jun 2001 15:34

Re: Argumente mit Leerzeichen an ein Skript übergeben

#2 Post by greg »

wenn du diese angabe mit backslashes machst:
brennen /mnt/this\ is\ a\ test

dann sollte es funktionieren.

bei mir funktioniert es allerdings auch mit anführungzeichne, so wie oben bei dir, korrekt:
testscript:
#!/bin/sh
echo "$1"

wenn ich jettzt z.b. eingebe:
./testscript "Ich liebe pro-linux"

bekomme ich :) :
Ich liebe pro-linux
Last edited by greg on 15. Aug 2001 22:13, edited 2 times in total.

Rossi

Re: Argumente mit Leerzeichen an ein Skript übergeben

#3 Post by Rossi »

Danke erstmal für Deine Antwort. Ich bin ein Stück weiter. Aus irgendwelchen Gründen will mkisofs das Argument nicht. "echo" zeigt $1 korrekt an, aber mkisofs nicht mehr. Rufe ich mkisofs aber direkt auf mit dem Dateinamen in Anführungszeichen, haut alles hin:

#!/bin/sh

MKISO=/usr/bin/mkisofs
CDR=/usr/bin/cdrecord
DEV="1,6,0"

if [ "$1" = "erase" ];then
$CDR dev=$DEV blank=all
echo "CD erased"
exit 0
fi

echo $1; echo

$MKISO -iso-level 2 -r -o /mnt/tmp/cd.raw $1
$CDR -v -V speed=4 dev=$DEV /mnt/tmp/cd.raw
rm -f /mnt/tmp/cd.raw
exit 0


> ./brenn "/mnt/tmp/this is a test"/mnt/tmp/this is a test

/usr/bin/mkisofs: No such file or directory. Invalid node - /mnt/tmp/this
/usr/bin/cdrecord: No such file or directory. No read access for '/mnt/tmp/cd.raw'.

Der letzte Punkt ist klar ... cd.raw gibt es noch nicht.
Rufe ich aber

mkisofs -iso-level 2 -r -o /mnt/tmp/cd.raw "/mnt/tmp/this is a test"

direkt auf, gibt es keine Probleme.

Kurios.

Rossi

Re: Argumente mit Leerzeichen an ein Skript übergeben

#4 Post by Rossi »

Hups, da hat das Forum doch glatt nen Zeilelumbruch gefressen. Die richtige Ausgabe muß lauten:

>./brenn "/mnt/tmp/this is a test"

/mnt/d_hdg1/this is a test

/usr/bin/mkisofs: No such file or directory. Invalid node - /mnt/d_hdg1/this
/usr/bin/cdrecord: No such file or directory. No read access for
'/mnt/d_hdg1/cd.raw'.

Rossi

Re: Argumente mit Leerzeichen an ein Skript übergeben

#5 Post by Rossi »

Und statt "d_hdg1" natürlich "tmp". Und jetzt gehe ich ins Bett ....

Sebastian Ude

Re: Argumente mit Leerzeichen an ein Skript übergeben

#6 Post by Sebastian Ude »

Wie sieht denn die Zeile mit dem mkisofs-Aufruf in deinem Script aus ?

Probier mal

mkisofs [Optionen] "$1"

statt

mkisofs [Optionen] $1

Rossi

Re: Argumente mit Leerzeichen an ein Skript übergeben

#7 Post by Rossi »

Götterknabe ! Das "$1" ist es gewesen (die Anführungszeichen). Danke und schönen Abend noch :)

Sebastian Ude

Re: Argumente mit Leerzeichen an ein Skript übergeben

#8 Post by Sebastian Ude »

> Danke und schönen Abend noch :)

Danke, gleichfalls.

Post Reply