如果您使用的是执行简单替换的外壳,并且SHELL_VAR变量不存在(或为空),则需要注意边缘情况。以下翻译将发生:if test $SHELL_VAR = yes; then --> if test = yes; thenif test x$SHELL_VAR = xyes; then --> if test x = xyes; then由于test缺少第一个参数,第一个会产生错误。第二个没有那个问题。您的案例翻译如下:if test "x$SHELL_VAR" = "xyes"; then --> if test "x" = "xyes"; then的x,至少对于符合POSIX的壳,实际上是多余的,因为引号随之而来的是两个空的参数和一个容纳空间被解释为单个对象。