Hi Ich bin grad dran mir ein kleines Shellscript zu basteln, habe aber Probleme mit einem einfachen Problem: Das Script soll einen Dateinamen annehmen und den an ein anderes proggy weitergeben (so ein bisschen wrapper mässig) zB: #!/bin/bash FILE="$1" #(...) /bin/somescript --bla --blu ${FILE} Das funktioniert auch für normale Dateinamen. Wenn ich jedoch Leerzeichen im Dateinamen habe, gehts nicht mehr. Alle Versuche mit den folgenden Varianten scheiterten: FILE="\"$1\"" FILE="'$1'" FILE=`echo "$1" | sed 's/ /\\ /'` Anscheinend kommt das dann immer als zwei argumente an - wie kann ich das lösen?? Danke Matti -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Matthias Keller wrote:
Ich bin grad dran mir ein kleines Shellscript zu basteln, habe aber Probleme mit einem einfachen Problem: Das Script soll einen Dateinamen annehmen und den an ein anderes proggy weitergeben (so ein bisschen wrapper mässig)
zB: #!/bin/bash FILE="$1" #(...) /bin/somescript --bla --blu ${FILE}
Das funktioniert auch für normale Dateinamen. Wenn ich jedoch Leerzeichen im Dateinamen habe, gehts nicht mehr. Alle Versuche mit den folgenden Varianten scheiterten: FILE="\"$1\"" FILE="'$1'" FILE=`echo "$1" | sed 's/ /\\ /'`
Das kannst'e alles weglassen.
Anscheinend kommt das dann immer als zwei argumente an - wie kann ich das lösen??
Indem Du den Aufruf von /bin/somescript richtig machst? Versuch doch mal /bin/somescript --bla --blu "${FILE}". Andreas -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 31. März 2008 schrieb Matthias Keller:
Hi
Ich bin grad dran mir ein kleines Shellscript zu basteln, habe aber Probleme mit einem einfachen Problem: Das Script soll einen Dateinamen annehmen und den an ein anderes proggy weitergeben (so ein bisschen wrapper mässig)
zB: #!/bin/bash FILE="$1" #(...) /bin/somescript --bla --blu ${FILE}
Angenommen das obige Skriptfragment heißt script1. Dann musst Du die Parameter bereits beim Aufruf von script1 quoten script1 "Datei Name mit Leerzeichen" sonst erhälst Du FILE="Datei" Grüße Ralf -- Antworten bitte nur in die Mailingliste! PMs bitte an: listpm (@) arndt-de (.) eu -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Matthias, On Monday 31 March 2008 12:36:52 Matthias Keller wrote:
#!/bin/bash FILE="$1" #(...) /bin/somescript --bla --blu ${FILE}
Erst mal hier quoten: /bin/somescript --bla --blu "${FILE}" Und beim Aufrauf deines Wrappers natuerlich auch nochmal, also z.B. wrapperscript 'Ein File mit Leer- und Sonderzeichen im Namen (so ein Quatsch)' Roman -- Roman Fietze Telemotive AG Büro Mühlhausen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Roman Fietze wrote:
Hallo Matthias,
On Monday 31 March 2008 12:36:52 Matthias Keller wrote:
#!/bin/bash FILE="$1" #(...) /bin/somescript --bla --blu ${FILE}
Erst mal hier quoten:
/bin/somescript --bla --blu "${FILE}"
Und beim Aufrauf deines Wrappers natuerlich auch nochmal, also z.B.
wrapperscript 'Ein File mit Leer- und Sonderzeichen im Namen (so ein Quatsch)'
Hi Beim Aufruf ist klar, doch beim somescript kann ich leider keine quotes drum machen, da ${FILE} möglicherweise mehr als ein Dateiname enthält. Sprich das somescript wird entweder mit einem filenamen aufgerufen oder mit mehreren und ich möchte den aufruf nicht zweimal reinschreiben müssen... (das passiert im #(...), welches ich weggelassen habe - dort wird ggf ${FILE} noch geändert in mehrere dateinamen zB via `ls -1 "$1" | xargs` wenn $1 ein Verzeichnis ist) Oder geht das, was ich will nicht mit einem einzelnen Aufruf von somescript? also zB soll folgendes passieren: $ wrapperscript "blabla file.txt" -> /bin/somescript --bla --blu "blabla file.txt" $ wrapperscript . -> /bin/somescript --bla --blu "blabla file.txt" "another blablafile in the same directory.txt" Vielen Dank Matti -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Matthias, On Monday 31 March 2008 14:13:28 Matthias Keller wrote:
Beim Aufruf ist klar, doch beim somescript kann ich leider keine quotes drum machen, da ${FILE} möglicherweise mehr als ein Dateiname enthält.
Ohne Umweg ueber $FILES: #/bin/bash # ... /bin/somescript --bla --blu "$@" Mit Umweg ueber $FILES (bitte noch testen, einfach mal so hingeschrieben): #!/bin/bash declare -a FILES=( "$@" ) # mach was mit FILES ... /bin/somescript --bla --blu "${FILES[@]}" Roman -- Roman Fietze Telemotive AG Büro Mühlhausen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (4)
-
Kyek, Andreas, VF-DE
-
Matthias Keller
-
Ralf Arndt
-
Roman Fietze