如何使命令的每一行成为另一个命令的参数?

时间:2018-02-01 00:30:52

标签: linux bash

就我而言,我想在所有Git阶段文件上运行Eslint。

git diff --diff-filter=d --cached --name-only | grep -E '\.jsx?$输出:

changedFile1.js
changedFile2.js

我想将它们传递给Eslint以生成命令:

node_modules/.bin/eslint changedFile1.js changedFile2.js

我该怎么做?

到目前为止,我发现的唯一解决方案是遍历已更改的文件,然后为每个更改的文件调用Eslint。但是,这比使用所有更改的文件调用Eslint要慢得多。

我正在使用Ubuntu 16.04。

1 个答案:

答案 0 :(得分:0)

命令的输出可以像$(...)那样分配给变量或其他程序作为参数:

node_modules/.bin/eslint $(git diff --diff-filter=d --cached --name-only | grep -E '\.jsx?$)

grep命令在我看来,好像它缺少一个关闭的撇号,所以如果这是你在问题中的错误,你也必须在答案中修复它。