bash - Bash 脚本命令和摆脱 shellcheck 错误 SC2181
问题描述
我有以下 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
推荐阅读
- php - 从 WooCommerce 中的国家/地区代码中排除州
- python - 更正 TypeError:“float”类型的对象没有 len()
- postgresql - 如何在 Strapi database.js 配置文件中动态传递 docker 容器 IP 地址
- c# - 我正在尝试在 asp.net c# 中使用 google API 发送电子邮件并收到错误 400 redirect_uri_mismatch
- google-drive-api - 有什么方法可以使用 google drive 可共享链接作为 Microsoft azure 表单识别器的输入?
- zendesk - 我正在尝试从报告中过滤合并的票证
- r - 用回车替换字符串
- recursion - 最大子数组问题可以在 O(n) 时间内递归求解吗?
- java - Java - Orcale 无法为事务打开 JDBC 连接
- android - Android资源编译失败-AAPT错误-资源重复值