GNU Параллельно с проверкой оболочки на несколько файлов - PullRequest
0 голосов
/ 26 июня 2018

Как использовать GNU Parallel для запуска shellcheck на всех * .sh с помощью функции-оболочки?

Эта попытка имеет правильные целевые файлы, но Parallel, кажется, борется с подоболочкой.

lint:sh() {
  local output
  targets=$(find . -name '*.sh' -exec echo {} \;)
  output=$(parallel --no-notice shellcheck ::: "$targets")
  results $? "$output"
}

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Используйте следующий подход:

lint:sh() {
  local output
  output=$(find . -name "*.sh" -print0 | parallel -q0 --no-notice shellcheck)
  ...
}
0 голосов
/ 26 июня 2018

из-за различных недостатков в bash самый безопасный способ может быть

targets=()
while read -r -d '' file; [[ $file ]]; do
    targets+=("$file");
done < <(find . -name '*.sh' -print0)

также потому, что тип targets был изменен на массив

output=$(parallel --no-notice shellcheck ::: "${targets[@]}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...