switch user in bash , Umbebungsvariable nutzen

Token001

Banned
Registriert
Nov. 2020
Beiträge
10
Hallo zusammen,
ich steh gerade auf dem Schlauch.
ich versuche folgendes:
Code:
su - $SIDADM -c "hdbsql -a -i '\$TINSTANCE' -n $HOST -d $USID..."

$SIDADM, $HOST und $USID gebe ich als Flag mit und werden auch brav aufgelöst
$TINSTANCE ist die Umgebungsvariable des Users $SIDADM , ich bekomme aber nicht den Wert

Code:
su -  $SIDADM -c "echo 'ENV '\$TINSTANCE'...'"
geht aber.

Hab da schon alles mögliche ausprobiert, ich bekomme es einfach nicht hin.

Jemand eine Idee?

Grüße und danke
 
Hallo,

Zitat [Patrick Ditchen 'Shell-Skript Programmierung' 1. Auflage 2003, Seite 41]:
... [nach] ' (Single Quotes) verlieren alle Metazeichen ihre Spezielbedeutung ...

... Verwendet man stattdessen doppelte Anführungszeichen (Double Quotes), behält das Sonderzeichen $ seine Bedeutung. Auf diese Art ist es möglich, Variablen in einer Zeichenkette einzusetzen ... [Zitat-Ende]

In obigem Fall sollte man also '\$TINSTANCE' ersetzen durch \"$TINSTANCE\".
Wenn $TINSTANCE eine Zeichenkette mit mehreren durch Leerzeichen getrennte
Wörter enthält, kann man schreiben: \'\"$TINSTANCE\"\'

Gruß
JW
 
Hi Jw,
danke aber leider mit beiden Befehlen kein Glück.
Code ist:
Code:
-i  \"$TINSTANCE\"

und ich glaube das Problem liegt an:
Code:
su - $USER -c "<Befehl und Parameter > -i  \"$TINSTANCE\" <Rest> "

Wenn ich die Variable übergeben, geht alles.
und beim Echo oben ja auch...
Aktuell steht hier:
-i ""

Das ist zum Mäusemelken.
 
Hi Token001,

Code:
#!/bin/bash
SIDADM=$USER
HOST=$HOSTNAME
TINSTANCE='A B C'
su - $SIDADM -c "echo \'$TINSTANCE\' -n $HOST"

Ausgabe:
'A B C' -n <hostname>
 
Zuletzt bearbeitet:
Zurück
Oben