Wieder mal das Quoting

09/06/2011 - 11:46 von G | Report spam
Hallo,

ich begreife diese ganzen Auflösungen immer noch nicht ganz. Ich möchte
in einem bash-Skript ein Kommando als anderer Benutzer ausführen. Das
Kommando hat ebenfalls variable Parameter. Und letztlich will ich den
Rückgabewert wieder in meinem Skript haben. Ich komme mit den vielen
Quotings nicht zurecht und weiß nicht so ganz, wer da welches Leerzeichen
als Trennung interpretiert bzw. wann es einfach ein Leerzeichen bleibt
und wer wann und warum Variablen auflöst.

Hier mal ein Beispiel, wie ich es vor habe:
su -mc 'command constpar $parameter' $username
Jetzt wird username korrekt aufgelöst, parameter jedoch nicht. Und
constpar hàlt su schließlich für seinen eigenen Parameter, was natürlich
falsch ist. Schließlich weiß ich gar nicht, wie ich an den return-Wert
von command komme.

Insgesamt eine ziemlich verwirrende Geschichte. Ich habe auch ehrlich
gesagt noch nie verstanden, warum ich z.B. bei rsync zusàtzlich zu
Redezeichen die Leerzeichen doch noch escapen muss (rsync hostname:"some\
file"). Kann man da Licht hineinbringen?

Grüße!
 

Lesen sie die antworten

#1 Jan Kandziora
09/06/2011 - 12:54 | Warnen spam
Günther Frings wrote:

Hier mal ein Beispiel, wie ich es vor habe:
su -mc 'command constpar $parameter' $username
Jetzt wird username korrekt aufgelöst, parameter jedoch nicht.



$parameter steht in Einzelticks ', was "unveràndert übernehmen" bedeutet. Du
willst Doppelticks ", darin werden Referenzen aufgelöst.


Und
constpar hàlt su schließlich für seinen eigenen Parameter, was natürlich
falsch ist. Schließlich weiß ich gar nicht, wie ich an den return-Wert
von command komme.



Tatsàchlich? Bei mir kommt ein

bash: constpar: Kommando nicht gefunden.

was dafür spricht, dass in der von su aufgerufenen Subshell tatsàchlich

$ command constpar $parameter

aufgerufen wurde.

Mit freundlichem Gruß

Jan

Ähnliche fragen