在macOS上,我想通过管道传递一个命令的输出,并将其作为参数传递给另一个。问题在于传递的数据是二进制的,如果我使用xargs,它将以以下错误分割字节流:
xargs: unterminated quote
使用xargs的原因是对非常大的字节流进行分块,因此避免:
Argument list too long
xargs并不是适合该工作的工具(请参阅下面的评论)。
因此,我如何实现以下类似 的东西?
./v.sh | xargs command --argument $0
我尝试更改ulimit等。
用例是提交一个二进制文件作为Kubernetes机密。
谢谢!
答案 0 :(得分:3)
正如亚伦(Aaron)建议的那样,您应该避免在命令行上传递长参数,而要依靠从文件中读取它们,因此开始使用kubectl create secret generic test --from-file=<(./v.sh)
参数。
要即时计算命令并将其提供给您的命令,可以使用流程替换:
<()...
kubectl
语法被./v.sh
进程可以打开的文件描述符替代,并且将动态计算{{1}}的内容。就像命名管道(这可能是解决您问题的另一种方法)。