Командный скрипт Bash и избавление от ошибки shellcheck SC2181 - PullRequest
0 голосов
/ 13 октября 2018

У меня есть следующий скрипт bash:

dpkg-query --show --showformat='${Status}\n' "$i" 2> \
      /dev/null | grep "install ok installed" &> /dev/null
if [[ $? -eq 0 ]]; then
  l_var_is_desktop="true"
fi

и утилита ShellCheck (https://www.shellcheck.net/) дает мне следующий вывод:

$ shellcheck myscript

Line 17:
    if [[ $? -eq 0 ]]; then
          ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.

$ 

Ссылка на этупредупреждение следующее: https://github.com/koalaman/shellcheck/wiki/SC2181

Каков наилучший способ изменить это. Команда слишком длинна, чтобы поместить ее в одну строку. Я хотел бы избежать использования правил игнорирования ShellCheck.

Я попытался создать локальную переменную и сохранить выходные данные команды, но это нарушает другие правила.

1 Ответ

0 голосов
/ 13 октября 2018

Команда на самом деле не становится намного длиннее, если поместить ее непосредственно в if, вы просто добавляете 3 символа.

if dpkg-query --show --showformat='${Status}\n' "$i" 2> \
    /dev/null | grep "install ok installed" &> /dev/null
then
    l_var_is_desktop="true"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...