在if语句中使用testing命令时出错

我试图创build一个if语句使用testing命令,检查variables“名称”是否包含“斯科特皮尔斯”。

#!/bin/bash name="Scott Pearce" if test $name == "Scott Pearce"; then echo "Yes" else echo "No" fi 

当我运行脚本时,我收到一个错误:

 ./script1: line 5: test: too many arguments 

任何想法我做错了什么?

 if test "$name" = "Scott Pearce"; 

你需要引用这个变量,否则当shell扩展它时,由于你的变量包含一个空格,所以test不会得到正确数量的参数。

另外,用于测试的字符串相等运算符是= ,而不是==

如果你真的想测试contains ,然后选择其中之一

庆典

 if [[ $name == *"Scott Pearce"* ]]; then ... 

POSIX

 case "$name" in *"Scott Pearce"*) echo Hi Scott ;; *) echo Begone stranger ;; esac 

bash中的==运算符[[命令是模式匹配运算符。