如何检查$ 1和$ 2是否为空?

我正在运行一些传递字符串参数的脚本,如果else语句如下所示我想做:

if [ $1 != '' ] && [ $2 != '' ] then do something..... 

但它显示Error too many argument 。 为什么?

尝试使用-z测试:

 if [ -z "$1" ] && [ -z "$2" ] 

来自man bash

 -z string True if the length of string is zero. 

由于这是标记的bash ,我建议使用扩展的测试构造( [[...]] ) ,并忘记引号:

 if [[ -z $1 && -z $2 ]]; then ... 

除非你想要sh / POSIX兼容性,否则没有理由不使用[[ ]]

这也有效,

 if [ "$1" == "" && "$2" == ""]; then echo NULL fi 

你看到的一个非常频繁的方法是:

  if [ "x$var1" == "x" ] && [ "x$var2" == "x" ]; then echo "both variables are null" fi 

通常它用于避免意外后果,例如变量未设置。 你会更频繁地看到它被用作if [ "x$var" != "x" ]