Когда я перенаправляю вывод из docker exec
в другую команду, он, похоже, портит окончания строк моего терминала.
Например:
$ docker exec -it foo sh -c 'echo {\"a\":\"b\",\"c\":\"d\"}' | jq
{
"a": "b",
"c": "d"
}
$
Но если я тогда сразу же выполню ту же команду на том же терминале на хосте:
$ sh -c 'echo {\"a\":\"b\",\"c\":\"d\"}' | jq
{
"a": "b",
"c": "d"
}
...как и ожидалось.
Если я передаю вывод через xxd
, он, похоже, вводит символ CR, а также LF (0d0a, а не 0a); это также портит вывод из xxd
:
$ docker exec -i -t foo sh -c 'echo {\"a\":\"b\",\"c\":\"d\"}' | xxd
00000000: 7b22 6122 3a22 6222 2c22 6322 3a22 6422 {"a":"b","c":"d"
00000010: 7d0d 0a
Если я попытаюсь исключить докер, выдав \r\n
сам, все будет в порядке:
$ printf "{\"a\":\"b\",\"c\":\"d\"}\r\n" | xxd
00000000: 7b22 6122 3a22 6222 2c22 6322 3a22 6422 {"a":"b","c":"d"
00000010: 7d0d 0a }..
$
... что означает, что это docker exec
.
И мой хост, и контейнер работают под управлением Linux. docker info
отчеты Server Version: 18.03.1-ce
. docker -v
сообщает о Docker version 18.03.1-ce, build 9ee9f40
.
Что docker exec
сделал с моим терминалом (временно) и как мне это исправить?