- 此问题在此处已有答案**:
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
使用占位符的原因是什么?使用该语法可以避免哪些潜在的陷阱?
1条答案
按热度按时间zbdgwd5y1#
在Bash wiki的陷阱4下有一个部分解释。
x”$foo”黑客是必须在非常古老的shell上运行的代码所必需的,这些shell缺少[[并且有一个更原始的[,如果$foo以-或者是!或(开头,则会混淆。在上述较老的系统上,[只需要对=左侧的标记格外小心;它正确地处理右边的令牌。
理想情况下,您现在编写的shell脚本不需要这样做,但最好理解为什么旧的shell脚本有时会这样做。