【发布时间】:2018-12-04 18:07:15
【问题描述】:
如何使用 GNU Parallel 对所有带有包装函数的 *.sh 运行 shellcheck?
此尝试具有正确的目标文件,但 Parallel 似乎与 subshell 斗争。
lint:sh() {
local output
targets=$(find . -name '*.sh' -exec echo {} \;)
output=$(parallel --no-notice shellcheck ::: "$targets")
results $? "$output"
}
【问题讨论】:
-
我认为您希望
targets成为一个数组。targets=($(find ...))然后将”${targets[@]}传递给 GNU Parallel -
find ... -exec echo {} \;似乎过于冗长 - 尝试省略-exec以及之后的所有内容。 -
当使用数组时(详细不是他当前的问题)
mapfile -t targets < <(find . -name '*.sh' -exec echo {} \;) output=$(parallel --no-notice shellcheck ::: "${targets[@]}")我得到一个非零退出但在子shell 中没有,lint:sh - 结果未被调用 -
它是在调用目标而不是将它们传递给 shellcheck
-
我认为函数名中不允许使用冒号,顺便说一句。
标签: bash gnu-parallel shellcheck