字符串变量和字符串的比较在 shell 脚本中抛出错误

Comparison of a string variable and a string is throwing error in shell script

我正在编写一个 shell 小脚本,用于将服务器日志备份到亚马逊。我们有多个服务器 运行 用于生产。所以我写了一个脚本来动态检测服务器并进行备份。但是我在比较两个字符串时遇到了一个问题。我会在下面给出我写的代码片段和错误。

test.sh    

host="$(hostname)"
if [ "$host" == "server1-myapp.com" ]; then
   function_1 $host
elif [ "$host" == "server2-myapp.com" ]; then
   function_2 $host
elif [ "$host" == "server3-myapp.com" ]; then
   function_3 $host
fi

function_1 () {
   echo "host name is "
}

function_2 () {
   echo "host name is "
}

function_3 () {
   echo "host name is "
}

但是当 运行 test.sh as sh test.sh 我得到以下 error .

 test.sh: 2: [: server1-myapp.com: unexpected operator
 test.sh: 4: [: server1-myapp.com: unexpected operator
 test.sh: 6: [: server1-myapp.com: unexpected operator

我尝试了不同的方法来匹配两个字符串,一个是变量,另一个是内联字符串,它不能正确匹配字符串,有人可以帮助我吗,我有点卡住了。

要将 shell 中的字符串与 [ ] 运算符进行比较,它使用 = 而不是 ==。这将有效:

if [ "$host" = "server1-myapp.com" ]; then