Как я могу передать большой двоичный вывод одной команды оболочки в качестве аргумента следующей? - PullRequest
0 голосов
/ 11 апреля 2019

В macOS я хотел бы передать вывод одной команды и передать ее в качестве аргумента другой. Проблема в том, что переданные данные являются двоичными, и если я использую xargs, он разбивает поток данных со следующей ошибкой:

xargs: unterminated quote

Причиной использования xargs является разбиение на очень большой поток и, следовательно, избегание:

Argument list too long

xargs не подходит для работы (см. Комментарии ниже).

Как я могу достичь чего-то вроде следующего?

./v.sh | xargs command --argument $0

Я пытался изменить ulimit и т. Д.

Вариант использования - фиксация двоичного файла в качестве секрета Кубернетеса.

Спасибо!

1 Ответ

3 голосов
/ 11 апреля 2019

Как предложил Аарон, вам следует избегать передачи длинных аргументов в командной строке и полагаться на их чтение из файла, поэтому начните использовать параметр --from-file.

Чтобы вычислить команду на лету и выдать еек вашей команде вы можете использовать подстановку процесса:

kubectl create secret generic test --from-file=<(./v.sh)

Синтаксис <()... заменяется дескриптором файла, который может открыть процесс kubectl, и будет вычислено содержимое ./v.shмуха.Это похоже на именованный канал (что может стать еще одним решением вашей проблемы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...