2016-06-22 3 views
0

Я пытаюсь получить мой туннель ID из соуса лаборатории ... Для того, чтобы получить это я делаю следующее:экспорт, добавив дополнительные символы

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

Это возвращает ["my-tunnel-id"]

Так что я хочу, чтобы избавиться от из [] и экспортируют мой туннель ид ..

Вот экспорт и удаление []

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

Когда я делаю export -p, я вижу, как этот "\"my-tunnel-id\""

Но если я вобще echo $SAUCE_TUNNELL_IDENTIFIER, я не вижу Exta "\ в моей переменной. Откуда это? Кроме того, любая помощь, помогающая сделать это в одну лучшую команду, также будет оценена! :)

+0

Возможно, попробуйте 'export SAUCE_TUNNELL_IDENTIFIER =" $ (curl https://saucelabs.com/rest/v1/myusername/tunnels -u myusername: mykey | tr -d '[]') ". tr (anslate) -d (elete) символов ... если вы также хотите удалить двойные кавычки вокруг идентификатора туннеля, попробуйте '... | tr -d '[] "' ...' вместо этого в вышеупомянутой части перевода ... HTH – Dilettant

+0

Я попробовал и получил 'tr: invalid option - '['' –

+0

Hm, иногда - по крайней мере, на моей ОС X bash, пробелы раздражают, например 'echo '[" tunneld-id "]' | tr -d '[]'' дает 'tr: незаконный вариант - [' while 'echo '[" tunneld-id "]' | tr -d '[]' 'счастливо перекликается '" tunneld-id "' ;-) – Dilettant

ответ

3

Сервер возвращает массив JSON; вы можете использовать что-то вроде jq, чтобы извлечь только один элемент в массиве, но для чего-то такого простого вы можете просто использовать расширение параметра.

$ 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 

Обновление:

Я предположил, идентификатор не может содержать скобки или кавычки. Более безопасная, хотя и более длинная альтернатива заключается в том, чтобы разделить каждый внешний символ один за другим.

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

и в этот момент я могу также показать, как использовать jq, чтобы сделать это:

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

. представляет входящий JSON; [0] извлекает первый элемент; -r сообщает jq, чтобы вывести необработанную строку вместо строки JSON (my-tunnel-id вместо "my-tunnel-id").

+0

FYI вы остановились на $ в эхе ... но это работает! спасибо! –

Смежные вопросы