我试图创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中的==
运算符[[
命令是模式匹配运算符。