gpt4 book ai didi

linux - 如何使用管道发送参数

转载 作者:太空宇宙 更新时间:2023-11-04 10:04:31 24 4
gpt4 key购买 nike

我无法将一个命令的输出作为第二个命令的参数发送:

git diff --name-only HEAD | prettier --write

我想发送 prettier 所有修改后的文件,但我收到以下错误:

No parser and no file path is given, couldn't infer a parser.


当我在第一个命令的输出的一行上手动尝试它时,它按预期工作:

 prettier --write --write path-of-the-file/file1.bla

我的错误在哪里?

最佳答案

错误可能是因为命令通过管道传递,即 prettier不从标准输入中读取,但仅在作为位置参数( prettier <input-args> )传递时读取。通常,当命令通过管道传输时,第一个命令的标准输出连接到其后命令的标准输入。

使用 xargs正是为了那个。管道从上一个命令接收到的输出并轻松传递它。它应该适用于 FreeBSD 和基于 GNU 的系统。

git diff --name-only HEAD | xargs -I {} prettier --write "{}"

或者如果你的 shell 很新,并且它支持进程替换,你可以运行命令 prettier对于 git diff 的每个输出行作为

while IFS= read -r op; do
prettier --write "$op"
done< <(git diff --name-only HEAD)

关于linux - 如何使用管道发送参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53534503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com