你在while[xxx]之前将while中括号内的东西(xxx)打印一下看就明白了:echo xxx 可能原因是其中有参数带有特殊字符,如”[”、“]“等,你可以这样引用参数:while [ ${var} = ${var2} ]do...如果还可能有空串的话,这样万无一失:while [ ”X${var}“ = "X${var2}" ]do...X是随便拼上去的一个字符,目的就是保证你那个串不会是空的