2016-06-22 13 views
0

Ich versuche, meine Tunnel-ID aus Sauce Labs zu bekommen ... Um dies zu erhalten, ich folgendes tue:Export Hinzufügen von zusätzlichen Zeichen

SAUCE_TUNNELL_IDENTIFIER=$(curl https://saucelabs.com/rest/v1/myusername/tunnels -u myusername:mykey) 

Das gibt ["my-tunnel-id"]

Deshalb möchte ich loswerden meine Tunnel-ID der [] und exportieren ..

Hier ist der Export und die Entfernung von []

export SAUCE_TUNNELL_IDENTIFIER=$(echo $SAUCE_TUNNELL_IDENTIFIER | awk '{print substr($0, 2, length($0) -2)}') 

Wenn ich ein export -p tun, ich sehe es wie diese "\"my-tunnel-id\""

Aber wenn ich gerade ein echo $SAUCE_TUNNELL_IDENTIFIER, ich sehe nicht die exta "\ in meinen Variablen. Woher kommt das? Auch jede Hilfe, die dies zu einem besseren Befehl machen würde, würde ebenfalls geschätzt werden! :)

+0

Vielleicht versuchen Sie, exportieren SAUCE_TUNNELL_IDENTIFIER = "$ (curl https://sauceLabs.com/rest/v1/myusername/Tunnels -u myusername: mykey | tr -d '[]')" '. tr (anslate) -d (elete) Zeichen ... falls Sie auch die Anführungszeichen um die Tunnel-ID streichen möchten, versuchen Sie es mit '... | tr -d '[]' '... 'statt in der oben genannten übersetzen Teil ... HTH – Dilettant

+0

Ich habe es versucht und erhielt' tr: ungültige Option -' [' –

+0

Hm, manchmal - zumindest auf meinem Betriebssystem X Bash, Leerzeichen sind nervig, wie 'echo '[" tunneld-id "]' | tr -d '[]' ergibt' tr: illegale Option - ['while' echo '["tunneld-id"]' | tr -d '[]' 'hallo' "tunneld-id" ';-) – Dilettant

Antwort

3

Der Server gibt ein JSON-Array zurück; Sie könnten etwas wie jq verwenden, um nur das einzelne Element im Array zu extrahieren, aber für etwas so einfaches können Sie einfach die Parametererweiterung verwenden.

$ SAUCE_TUNNELL_IDENTIFIER=$(curl https://saucelabs.com/rest/v1/myusername/tunnels -u myusername:mykey) 
$ SAUCE_TUNNELL_IDENTIFIER=${SAUCE_TUNNELL_IDENTIFIER//[]\"[]} 
$ echo "$SAUCE_TUNNELL_IDENTIFIER" 
my-tunnel-id 

Update:

Ich nahm die Kennung nicht Klammern oder Anführungszeichen enthalten könnte. Eine sicherere, wenn auch längere Alternative ist es, jedes äußere Zeichen eins nach dem anderen zu entfernen.

$ STI=$(curl ...) 
$ STI=${STI#[} 
$ STI=${STI#\"} 
$ STI=${STI%]} 
$ STI=${STI%\"} 

und an dieser Stelle ich auch zeigen kann, wie jq zu verwenden, um dies zu tun:

$ curl ... | jq -r '.[0]' 
my-tunnel-id 

. den eingehenden JSON repräsentiert; [0] extrahiert das erste Element; -r teilt jq mit, die rohe Zeichenfolge anstelle der in Anführungszeichen gesetzten JSON-Zeichenfolge (my-tunnel-id anstelle von "my-tunnel-id") auszugeben.

+0

FYI du hast das $ im Echo weggelassen ... aber das funktioniert! Danke! –

Verwandte Themen