我有一个文件source-push.sh,它返回要从find命令结果中排除的文件列表。
它看起来像这样:
#!/usr/bin/env bash
find . -not \( -path './node_modules' -prune \) -name '*.js' | grep -vE $(echo $(./source-push.sh | xargs -I{} echo -n "{}|") | rev | cut -b2- | rev) | xargs -L1 standard --fix
find . -not \( -path './node_modules' -prune \) -name '*.css' | grep -vE $(echo $(./source-push.sh | xargs -I{} echo -n "{}|") | rev | cut -b2- | rev) | xargs -L1 stylelint --config stylelint.json
应该有一种方法可以做得更好。有什么建议吗?
答案 0 :(得分:0)
代替:
... | grep -vE $(echo $(./source-push.sh | xargs -I{} echo -n "{}|") | rev | cut -b2- | rev ) | ...
您可以使用POSIX选项-F
和-f
:
... | grep -v -F -f <( ./source-push.sh ) | ...
-F
告诉grep模式是固定字符串
grep -E
专用字符,则原始代码会中断)-f file
告诉grep使用file
中的模式列表<( ... )
是一种bash方式,可以将程序输出显示为文件(命名管道)