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

时间:2015-04-19 14:36:21

标签: linux bash

我正在尝试使用test命令创建一个if语句,该命令检查变量" name"包含" Scott Pearce"。

#!/bin/bash

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

当我运行脚本时,我收到一条错误消息:

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

知道我做错了吗?

2 个答案:

答案 0 :(得分:5)

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

您需要引用该变量,否则当shell展开它时,test将无法获得正确数量的参数,因为您的变量包含空格。

测试的字符串相等运算符也是=,而不是==

答案 1 :(得分:4)

如果您真的想测试contains,请选择其中一个

的bash

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

POSIX

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

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