2015-04-19 77 views
2

我想创建一个if语句,使用test命令检查变量“name”是否包含“Scott Pearce”。错误在if语句中使用测试命令

#!/bin/bash 

name="Scott Pearce" 
if test $name == "Scott Pearce"; 
then 
     echo "Yes" 
else 
     echo "No" 
fi 

当我运行该脚本,我得到一个错误说:

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

任何想法,我做错了什么?

回答

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

您需要引用变量,否则当shell扩展它,test不会得到的观点的权利数量,因为你的变量包含空格。

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

+0

感谢您的更正@Mat。 –

4

如果你真的想测试contains,然后选择

庆典

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

之一POSIX

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

==运营商在bash的[[命令是模式匹配运营商。

+0

感谢您的回答格伦。我想用测试来学习使用这个命令。 –