Как напечатать значение переменной в следующей строке, используя команду echo

Я получаю вывод команды curl, как показано ниже

curl -s https://api.github.com/repos/harshavardhanc/dockerfile-ansible/pulls\?state\=all | jq -r '.[]|(.number|tostring)+" "+.user.login+" "+.created_at+" "+.merged_at'
5 test 2019-09-27T11:06:23Z 2019-09-27T11:09:28Z
4 test1 2019-09-26T16:56:40Z 2019-09-26T16:57:02Z
3 test2 2019-09-26T16:54:25Z 2019-09-26T16:54:55Z
2 test3 2019-09-26T16:52:59Z 2019-09-26T16:55:19Z
1 test4 2019-09-26T16:46:52Z 2019-09-26T16:47:25Z

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

prlist=$(curl -s https://api.github.com/repos/harshavardhanc/dockerfile-ansible/pulls\?state\=all | jq -r '.[]|(.number|tostring)+" "+.user.login+" "+.created_at+" "+.merged_at')
echo $prlist
5 test 2019-09-27T11:06:23Z 2019-09-27T11:09:28Z 4 test1 2019-09-26T16:56:40Z 2019-09-26T16:57:02Z 3 test2 2019-09-26T16:54:25Z 2019-09-26T16:54:55Z 2 test3 2019-09-26T16:52:59Z 2019-09-26T16:55:19Z1 test4 2019-09-26T16:46:52Z 2019-09-26T16:47:25Z

Как избежать этой печати в другой строке? Пожалуйста, помогите.

6
задан 28 September 2019 в 15:56

1 ответ

То, что Вы описываете, является стандартным поведением echo луг неупомянутая переменная:

$ prlist=$(curl -s https://api.github.com/repos/harshavardhanc/dockerfile-ansible/pulls\?state\=all | 
           jq -r '.[]|(.number|tostring)+" "+.user.login+" "+.created_at+" "+.merged_at')
$ echo $prlist
5 SMYALTAMASH 2019-09-27T11:06:23Z 2019-09-27T11:09:28Z 4 ganesh-28 2019-09-26T16:56:40Z 2019-09-26T16:57:02Z 3 ganesh-28 2019-09-26T16:54:25Z 2019-09-26T16:54:55Z 2 ganesh-28 2019-09-26T16:52:59Z 2019-09-26T16:55:19Z 1 ganesh-28 2019-09-26T16:46:52Z 2019-09-26T16:47:25Z

Поэтому $prlist не заключается в кавычки. Сравните тому, что происходит, если Вы заключаете его в кавычки:

$ echo "$prlist"
5 SMYALTAMASH 2019-09-27T11:06:23Z 2019-09-27T11:09:28Z
4 ganesh-28 2019-09-26T16:56:40Z 2019-09-26T16:57:02Z
3 ganesh-28 2019-09-26T16:54:25Z 2019-09-26T16:54:55Z
2 ganesh-28 2019-09-26T16:52:59Z 2019-09-26T16:55:19Z
1 ganesh-28 2019-09-26T16:46:52Z 2019-09-26T16:47:25Z

, Но почему использование переменная вообще? Можно просто проанализировать вывод curl непосредственно:

curl ... | jq ... | someOtherCommand

Как это:

curl -s https://api.github.com/repos/harshavardhanc/dockerfile-ansible/pulls\?state\=all | 
  jq -r '.[]|(.number|tostring)+" \
    "+.user.login+" "+.created_at+" "+.merged_at'curl \
    -s https://api.github.com/repos/harshavardhanc/dockerfile-ansible/pulls\?state\=all |
 someOtherCommand
8
ответ дан 23 October 2019 в 10:11

Другие вопросы по тегам:

Похожие вопросы: