shell 为什么要在bash变量检查旁边添加占位符?[duplicate]

s2j5cfk0  于 2023-01-26  发布在  Shell
关注(0)|答案(1)|浏览(157)
    • 此问题在此处已有答案**:

Why test for equality in sh scripts in an indirect way?(4个答案)
2天前关闭。
我见过许多shell脚本使用与占位符字符串的比较来检查输入参数,例如。

if
[ "x$1" == "x" ]; then
xyz()
fi

我认为这是一个最佳实践,因为它似乎无处不在。
就我个人而言,我总是在没有占位符的情况下进行输入arg检查:

if
[ "$1" == "" ]; then
xyz()
fi

使用占位符的原因是什么?使用该语法可以避免哪些潜在的陷阱?

zbdgwd5y

zbdgwd5y1#

在Bash wiki的陷阱4下有一个部分解释。
x”$foo”黑客是必须在非常古老的shell上运行的代码所必需的,这些shell缺少[[并且有一个更原始的[,如果$foo以-或者是!或(开头,则会混淆。在上述较老的系统上,[只需要对=左侧的标记格外小心;它正确地处理右边的令牌。
理想情况下,您现在编写的shell脚本不需要这样做,但最好理解为什么旧的shell脚本有时会这样做。

相关问题