undefined

一、”[: too many arguments” error from if 问题

例如下的 shell 脚本:

1
2
3
4
VARIABLE=$(/some/command);
if [ $VARIABLE == 0 ]; then
# some action
fi

如果 $VARIABLE 时一个包含空格或者其他特殊字符的字符串,并且使用了单个方括号。那么该字符串可能会被拆分成多个单词。这些中的每一个都被视为一个单独的参数。
注意:单个方括号和两个方括号区别:https://serverfault.com/questions/52034/what-is-the-difference-between-double-and-single-square-brackets-in-bash

因此无法按照我们想要的去比较。可以将变量用双引号括起来,强制他保持为一个字符串。

1
2
3
4
VARIABLE=$(/some/command);
if [ "$VARIABLE" == 0 ]; then
# some action
fi

来自于:https://stackoverflow.com/questions/13781216/meaning-of-too-many-arguments-error-from-if-square-brackets