Linux 如何使用管道发送参数
我无法将一个命令的输出作为第二个命令的参数发送:Linux 如何使用管道发送参数,linux,git,pipe,prettier,Linux,Git,Pipe,Prettier,我无法将一个命令的输出作为第二个命令的参数发送: git diff --name-only HEAD | prettier --write 我想发送prettier所有修改过的文件,但出现以下错误: 未提供语法分析器和文件路径,无法推断语法分析器 当我在第一个命令输出的一行上手动尝试时,它按预期工作: prettier --write --write path-of-the-file/file1.bla 我的错误在哪里?错误可能是因为通过管道传输的命令,即prettier不从标准输入读
git diff --name-only HEAD | prettier --write
我想发送prettier
所有修改过的文件,但出现以下错误:
未提供语法分析器和文件路径,无法推断语法分析器
当我在第一个命令输出的一行上手动尝试时,它按预期工作:
prettier --write --write path-of-the-file/file1.bla
我的错误在哪里?错误可能是因为通过管道传输的命令,即
prettier
不从标准输入读取,而仅在作为位置参数传递时(prettier
)读取。通常,当命令通过管道传输时,第一个命令的标准输出连接到它后面的一个命令的标准输入
使用xargs
正是为了实现这一点。通过管道传输从上一个命令接收的输出,并轻松地传递它。它应该可以在FreeBSD和基于GNU的系统上工作
git diff --name-only HEAD | xargs -I {} prettier --write "{}"
或者,如果您的shell非常新,并且它支持进程替换,那么您可以为git diff
的每个输出行运行命令prettier
while IFS= read -r op; do
prettier --write "$op"
done< <(git diff --name-only HEAD)
而IFS=read-r op;做
更漂亮--写“$op”
完成<