GNU Parallel с проверкой оболочки на несколько файлов
Как использовать GNU Parallel для запуска shellcheck на всех *.sh с помощью функции-оболочки?
Эта попытка имеет правильные целевые файлы, но Parallel, кажется, борется с подоболочкой.
lint:sh() {
local output
targets=$(find . -name '*.sh' -exec echo {} \;)
output=$(parallel --no-notice shellcheck ::: "$targets")
results $? "$output"
}
2 ответа
Используйте следующий подход:
lint:sh() {
local output
output=$(find . -name "*.sh" -print0 | parallel -q0 --no-notice shellcheck)
...
}
Из -за различных недостатков в bash самый безопасный способ может быть
targets=()
while read -r -d '' file; [[ $file ]]; do
targets+=("$file");
done < <(find . -name '*.sh' -print0)
Также из-за targets
тип был изменен на массив
output=$(parallel --no-notice shellcheck ::: "${targets[@]}")