Bash 脚本命令和摆脱 shellcheck 错误 SC2181

标签 bash shellcheck

我有以下 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 忽略规则。

我已经尝试创建一个局部变量并存储命令的输出,但这违反了其他规则。

最佳答案

将命令直接放在 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

关于Bash 脚本命令和摆脱 shellcheck 错误 SC2181,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52787152/

相关文章:

linux - 屏蔽分隔列的shellscript

bash - 如何检查文件在 BASH 条件中是否超过 1 行?

regex - 删除模式前的空行。怎么了?目前使用 Perl 但对 sed/AWK 开放

bash - Bicep 文件中的部署后 bash 脚本不执行

linux - 如何在不杀死父进程的情况下杀死所有子进程

bash - 无法弄清楚如何修复 shellcheck 投诉,即从另一个脚本启动一个脚本时我不应该使用 glob 作为命令

bash - 为什么当源文件表示脚本顶部的变量时 shellcheck 会失败?

bash - 在 bash 中拆分列表

bash - 如何在传递 ShellCheck 时通过环境变量将 glob 传递给 shell 脚本

bash - 使用 `env` 命令并通过文件传递环境变量的最佳方法