Anzeige:
Ergebnis 1 bis 15 von 15

Thema: Parameterübergabe mit Leerzeichen an Bashscript

  1. #1
    Registrierter Benutzer
    Registriert seit
    Mar 2005
    Beiträge
    156

    Parameterübergabe mit Leerzeichen an Bashscript

    Habe 2 Bash Scripts.

    Das eine geht mit einer for schleife alle dateien in einem Verzeichnis durch.
    Die Dateinamen sind in der variablen $i.

    nun rufe ich das 2 script auf:

    COMMAND="script2.sh \"$i\""

    das problem ist nun, das das 2 script den dateinamen, wenn er leerzeichen enthält, nicht als einen, sondern als mehrere parameter betrachtet!!!

    was kann man dagegen tun???

  2. #2
    Registrierter Benutzer
    Registriert seit
    Feb 2005
    Beiträge
    278
    das Problem sollte eigentlich nicht auftreten

    for i in * ; do
    result=$(du -hs "$i")
    echo $result
    done

    zeigt die Symptome nicht.
    The Polarizer

  3. #3
    Registrierter Benutzer
    Registriert seit
    Mar 2005
    Beiträge
    156

    also...

    also ich mache:

    for i in $ROMPATH/*.*
    do

    COMMAND="/root/aa.sh '$i'"
    $COMMAND

    done

    geht nicht.

    aa.sh kriegt als $1 immer nur den ersten teil.

    genauso wie wenn ich
    COMMAND="/root/aa.sh \"$i\""
    mache, geht auch nicht!

  4. #4
    Registrierter Benutzer Avatar von mkahle
    Registriert seit
    Aug 2004
    Ort
    Hanau am Main
    Beiträge
    547
    Zitat Zitat von jogibear9988
    also ich mache:

    for i in $ROMPATH/*.*
    do

    COMMAND="/root/aa.sh '$i'"
    $COMMAND

    done

    geht nicht.

    aa.sh kriegt als $1 immer nur den ersten teil.

    genauso wie wenn ich
    COMMAND="/root/aa.sh \"$i\""
    mache, geht auch nicht!
    das Problem dürfte sein, daß "i" schon durch die for Schleife gesplittet wird...
    Warren's Regel:
    Willst du den Fachmann herausfinden, nimm den, der die meiste Zeit braucht und die höchsten Kosten für eine Sache voraussagt.

  5. #5
    Registrierter Benutzer
    Registriert seit
    Jul 2005
    Beiträge
    133
    wenn du $@ statt $1 verwendest, sollte es klappen

  6. #6
    Registrierter Benutzer Avatar von mkahle
    Registriert seit
    Aug 2004
    Ort
    Hanau am Main
    Beiträge
    547
    um meine Antwort ein wenig ausführlicher zu gestalten (ungetestet):

    Code:
    tmpFile=/tmp/filelist.$$
    ls -1 $ROMPATH/*.* >$tmpFile 2>/dev/null
    if [ -s $tmpFile ]; then
      while read entry; do
        COMMAND="/root/aa.sh '$entry'"
        # hier geht's weiter im script 
      done <$tmpFile
      rm -f $tmpFile
    else
      echo "Keine Dateien gefunden"
    fi
    Warren's Regel:
    Willst du den Fachmann herausfinden, nimm den, der die meiste Zeit braucht und die höchsten Kosten für eine Sache voraussagt.

  7. #7
    Registrierter Benutzer
    Registriert seit
    Sep 2004
    Ort
    127.0.0.1
    Beiträge
    333
    Hallo zusammen,

    ninguno hat recht ... die for schleife übergibt die Parameter richtig - eine Datei pro Durchgang - die Aufspaltung passiert bei der Parameterübergabe an aa.sh. Wenn man dort $1 durch $@ ersetzt (sofern aa.sh wirklich keine anderen Parameter mitkriegt) sollte es laufen.

    Grüße

  8. #8
    Registrierter Benutzer
    Registriert seit
    Mar 2005
    Beiträge
    156

    hilft mir nich...

    das mit dem $@ hilft mir nich...

    ich habe das aa.sh nur zum test geschriebn, damit ich sehe was für parameter übergeben werden. und aa.sh wird später durch ein anderes prg ersetzt, welches aber den namen als einen parameter bracuht und nicht als mehrere!!!

  9. #9
    Registrierter Benutzer
    Registriert seit
    Mar 2005
    Beiträge
    156

    noch was...

    $i wird nicht in der for schleif gespiltet...

    wenn z.b. in i
    folgendes steht: aa bb cc.zip

    bringt ein echo "inhalt von i : \"$i\""

    inhalt von i: "aa bb cc.zip"

    aber wenn ich das dann mache:

    aa.sh \"$i\"

    gehts nich... warum....

  10. #10
    Registrierter Benutzer
    Registriert seit
    Jul 2005
    Beiträge
    133
    und was passiert bei:

    aa.sh "$i"

  11. #11
    Registrierter Benutzer
    Registriert seit
    Mar 2005
    Beiträge
    156

    halt...

    vergass zu erwähnen.. es sieht ja so aus:

    cmd="aa.sh \"$i\""

    aber anderst:

    aa.sh "$i" geht nich...

    kanst ja mal einfach bei dir testen mit nem verzeichnis mit dateien welche leerzeichen enthalten!!

  12. #12
    Registrierter Benutzer
    Registriert seit
    Jul 2005
    Beiträge
    133
    also wenn ich selber ein shellscript schreibe und den Filenamen mit $@ entgegennehme dann funktionierts mit sicherheit.
    aber du sagst ja es handelt sich um ein programm und kein shellscript das du selbst anpassen kannst, oder nicht?

  13. #13
    Registrierter Benutzer
    Registriert seit
    Oct 2004
    Beiträge
    187
    Code:
    $ cd ~/tmp      
    $ mkdir testd                                
    $ cd testd                                                                                                                               
    $ mkdir test1 test2 test1\ test2                                                                                                
    $ cmd="ls \"test1 test2\""            
    $ $cmd                                 
    zsh: command not found: ls "test1 test2"
    $ eval $cmd
    (keine Ausgabe -> hat geklappt

  14. #14
    Registrierter Benutzer
    Registriert seit
    Mar 2005
    Beiträge
    156

    Problem eingegrenzt....

    3 dateien erstellen:
    aa.sh
    bb.sh
    aa\ bb\ cc.dd

    prameterübergabe klappt beim ersten aufruf von bb.sh aber nicht beim zweiten.!

    aa.sh:

    for i in *
    do
    echo "In in aa.sh: $i"
    ./bb.sh "$i"
    echo "Kommando über cmd übergeben:"
    cmd="./bb.sh \"$i\""
    $cmd
    echo
    echo
    done

    bb.sh:

    echo "1 in bb.sh: $1"
    echo "2 in bb.sh: $2"

  15. #15
    Registrierter Benutzer
    Registriert seit
    Mar 2005
    Beiträge
    156

    ok...

    ok nun denk ich es läuft...
    probiere nun meinen befehl so zu starten:

    $COMMAND "$i"

    mal guggen obs geht.

    warums aber anderst nicht geht, versteh ich nich...

Ähnliche Themen

  1. Keine Leerzeichen bei Verknüpfungen erlaubt?
    Von ukyo184 im Forum Linux Allgemein
    Antworten: 3
    Letzter Beitrag: 04.08.04, 07:04
  2. VSFTP und Leerzeichen
    Von BenniG. im Forum Linux als Server
    Antworten: 1
    Letzter Beitrag: 23.05.04, 15:00
  3. Problem mit Leerzeichen bei Nautilus
    Von dust123 im Forum Windowmanager
    Antworten: 1
    Letzter Beitrag: 06.07.03, 11:24
  4. Mit Sed Leerzeichen in "\ " umwandeln
    Von Menetekel im Forum Linux Allgemein
    Antworten: 4
    Letzter Beitrag: 17.05.03, 19:17
  5. leerzeichen in dateinamen *hmpf
    Von blackbird im Forum Linux in heterogenen Netzen
    Antworten: 3
    Letzter Beitrag: 03.08.00, 16:39

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •