Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 17

Thema: in Script einen Befehl mit Variablen innerhalb Single Quotes aufrufen - wie?

  1. #1
    Registrierter Benutzer Avatar von Poison Nuke
    Registriert seit
    Jun 2009
    Beiträge
    227

    in Script einen Befehl mit Variablen innerhalb Single Quotes aufrufen - wie?

    Hallo,

    wie kann ich innerhalb eines bash-scriptes einen Befehl ausführen und diesem Befehl einen Parameter in Single Quotes übergeben?

    Double Quotes gehen nicht, weil diese zu unsicher sind (escape usw).

    nur wenn ich eine Variable in single quotes schreibe wird diese ja nicht evaluiert.


    wie bekomm ich jetzt bei Befehlsaufruf den Inhalt der Variable in die Single Quotes rein?
    viele Grüße

    www.poisonnuke.de

  2. #2
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Dettenhausen
    Beiträge
    20.481
    doofe Idee: per echo z.B. zusammenbasteln, einer Variable übergeben und die in den Aufruf reinschreiben?

    Oder sehe ich am Problem vorbei?
    Ich bin root - ich darf das.

  3. #3
    Registrierter Benutzer Avatar von Poison Nuke
    Registriert seit
    Jun 2009
    Beiträge
    227
    gar nicht unsinnig die Idee

    aber irgendwie kommen die Single Quotes jetzt sogar in dem Programm an. Wenn ich in der Bash einen Befehl eingebe

    befehl/script 'Parameter1'

    dann kommt z.B. bei einem Script bei "echo $1" dann der Parameter raus ohne Single quotes, diese wurden also bei der Übergabe entfernt.


    wenn ich das ganze jetzt aber so aufrufen

    #!/bin/bash
    parameter="'"$variable"'"
    script $parameter

    dann kommt bei einem "echo $1" in dem Script der Inhalt von $parameter mitsamt der Single Quotes raus



    Ziel soll am Ende einfach sein, dass ich innerhalb eines Scriptes einen Userinput weiterverarbeiten kann und an ein weiteres Script übergeben kann, ohne dass der User mir aus der Befehlszeile escapen kann. Single Quotes im Userinput escape ich schon entsprechend. Es fehlen also nur die Single Quotes um den Input drumherum.

    Wenn ich da jetzt gerade falsch rangehe sagt es mir bitte
    viele Grüße

    www.poisonnuke.de

  4. #4
    Registrierter Benutzer
    Registriert seit
    Jan 2008
    Beiträge
    2.469
    Code:
    var=\'$PATH\'

  5. #5
    Registrierter Benutzer Avatar von Poison Nuke
    Registriert seit
    Jun 2009
    Beiträge
    227
    funktioniert leider auch nicht bzw hat das selbe Resultat wie var="'"$param"'"


    das eigenartige ist, wenn ich im Parameter ein Leerzeichen habe, dann lautet der erzeugte String dann erstmal so

    echo $var -> 'inhalt der variable'


    wenn ich dann nun das script aufrufe (script $var), kommt folgendes raus

    echo $1 -> 'inhalt
    echo $2 -> der
    echo $3 -> variable'


    das single quote wurde also offenbar escaped bevor es von der bash übergeben wurde.
    viele Grüße

    www.poisonnuke.de

  6. #6
    Registrierter Benutzer
    Registriert seit
    Jan 2008
    Beiträge
    2.469
    Code:
    script "$var"
    maskiert Leerzeichen in $var.

  7. #7
    Registrierter Benutzer Avatar von Poison Nuke
    Registriert seit
    Jun 2009
    Beiträge
    227
    dann wird es aber wieder mit double quotes übergeben, was ich ja eigentlich vermeiden wollte.

    andererseits, scheinen die single quotes von der bash escaped zu werden. Nur kann man sich wirklich darauf 100% verlassen? Ist das irgendwo dokumentiert? Nicht das am Ende mir ein User doch geschickt ein Quote usw in den String reinbringt und damit dann einen weiteren Befehl ausführen könnte
    viele Grüße

    www.poisonnuke.de

  8. #8
    Fieses Frettchen Avatar von DrunkenFreak
    Registriert seit
    Dec 2003
    Beiträge
    3.167
    Code:
    FOO=bar
    echo \'${FOO}\'

  9. #9
    Registrierter Benutzer Avatar von Poison Nuke
    Registriert seit
    Jun 2009
    Beiträge
    227
    an der Stelle waren wir schon am Anfang und es hatte nicht funktioniert.
    viele Grüße

    www.poisonnuke.de

  10. #10
    Fieses Frettchen Avatar von DrunkenFreak
    Registriert seit
    Dec 2003
    Beiträge
    3.167
    Könntest du mir die Stelle zeigen, wo ihr das hattet?

  11. #11

  12. #12
    Fieses Frettchen Avatar von DrunkenFreak
    Registriert seit
    Dec 2003
    Beiträge
    3.167
    Vergleiche die beiden und du wirst sehen, dass es einen Unterschied gibt

  13. #13
    Registrierter Benutzer Avatar von Poison Nuke
    Registriert seit
    Jun 2009
    Beiträge
    227
    die geschweiften Klammern sind mir durchaus aufgefallen, nur sie ändern nichts am Ergebnis. Was sollten die Klammern denn deiner Meinung nach bewirken?
    viele Grüße

    www.poisonnuke.de

  14. #14
    Fieses Frettchen Avatar von DrunkenFreak
    Registriert seit
    Dec 2003
    Beiträge
    3.167
    Das Skript spuckt dir, wie gewünscht, 'bar' aus. Sowohl in der bash, als auch in der zsh.
    Wobei ich zugeben muss, dass es das auch schon in #4 tut.

  15. #15
    Registrierter Benutzer Avatar von Poison Nuke
    Registriert seit
    Jun 2009
    Beiträge
    227
    das am Ende ein in single quotes gekapselter String rauskommt ist ja nicht das Problem irgendwie, das Problem mittlerweile stellt sich, wie übergibt man das ganze korrekt.

    Weil wenn ich nun dein FOO innerhalb eines Scriptes an ein weiteres Script als Parameter übergebe, dann sind die Singlequotes Bestandteil des Parameters und nicht nur seine Eingrenzung, so als wenn ich den parameter in der Bash per Hand eingebe und mit Singlequotes eingrenze.

    Siehe Beitrag #5.
    viele Grüße

    www.poisonnuke.de

Ähnliche Themen

  1. Shell Script --> echo Befehl
    Von realtec im Forum Linux Allgemein
    Antworten: 4
    Letzter Beitrag: 12.03.03, 09:03
  2. THPS3 Absturz direkt nach dem Start
    Von 50i im Forum Emulatoren für Spiele
    Antworten: 0
    Letzter Beitrag: 23.01.03, 18:26
  3. Variablen definieren in einem Script
    Von hardwarerosti im Forum Linux Allgemein
    Antworten: 2
    Letzter Beitrag: 07.05.02, 22:12
  4. Befehl in Script um ihn zu erweitern
    Von hunter im Forum Linux Allgemein
    Antworten: 18
    Letzter Beitrag: 07.01.02, 20:06
  5. Script aufrufen aus /etc/ip-up
    Von im Forum Anbindung an die Aussenwelt
    Antworten: 5
    Letzter Beitrag: 02.01.01, 00:07

Lesezeichen

Berechtigungen

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