hindent --style johan-tibell --line-length 80 --indent-size 4 --sort-imports -XQuasiQuotes
接受文件名作为参数,但如何将文件列表作为
我有变量fileNames
,其中包含文件名列表,我想使用此命令处理每个文件,我们可以不进行任何循环吗?
修改
变量fileNames
使用:
fileNames=$((git diff --cached --name-only | grep -E '*.hs'))
答案 0 :(得分:3)
您可以使用command substitution和for
循环进行循环播放:
for file in $( git diff --cached --name-only | grep -E '*.hs' ); do
hindent --style johan-tibell --line-length 80 --indent-size 4 --sort-imports -XQuasiQuotes ${file}
done
答案 1 :(得分:1)
最好的选择是fileNames
是一个数组:
hindent --style johan-tibell \
--line-length 80 --indent-size 4 \
--sort-imports -XQuasiQuotes "${fileNames[@]}"
否则,当文件包含空格时,您将遇到问题,即。 IFS
(内部字段分隔符)变量中的任何字符。
更新:
如果这只是一次性命令,并且您不再需要文件列表,则可以在一行中使用xargs
:
git diff --cached --name-only \
| grep -E '*.hs$' \
| xargs -r hindent --style johan-tibell \
--line-length 80 --indent-size 4 \
--sort-imports -XQuasiQuotes