我正在编写一个 shell 脚本,并决定通过shellcheck.net检查我的工作。我能够在我的脚本中获得以下两行的功能相同的行为:
findmnt /dev/sda1 >/dev/null ; if [ $? -eq 0 ]; then echo 1; else echo 0; fi
对比
if ! findmnt /dev/sda1 >/dev/null; then echo 0; else echo 1; fi
但是 shellcheck抛出:
SC2181:直接使用例如“if mycmd;”检查退出代码,而不是间接使用 $?。
我不清楚使用哪个。我确实看到:https ://github.com/koalaman/shellcheck/issues/1167这似乎已经针对几个可能的值进行了修改。我想确保我正在编写一些使用最佳实践的东西,并且可以毫无问题地运行并准确报告。