我正在尝试使用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
知道我做错了吗?
答案 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 ==
命令中的[[
运算符是模式匹配运算符。