我需要根据服务器执行特定的任务集,因此我想根据服务器定义条件。这是我想到的脚本,我已经阅读了多个博客,但找不到我的脚本中的任何错误。你能指导我在这里忽略什么吗?
#!/bin/bash
SERVER_NAME=`hostname -s`
hostname -s
DBServer=(servr1 servr2 servr3 servr4)
#AppServer=[hqidlfdiwa01 , hqiqlfdiwa01]
echo "Values of DBServer seeing is ${DBServer[*]}"
Values of DBServer seeing is servr1 servr2 servr3 servr4
for i in ${DBServer[*]}
do
echo "current value in I is $i"
echo "The server name found is $SERVER_NAME"
if [$SERVER_NAME == $i]
then
echo "I am on one of the servers and it is $i"
fi
done
我在服务器上看到的输出是
current value in I is servr1
The server name found is servr1
-bash: [servr1: command not found
current value in I is servr2
The server name found is servr1
-bash: [servr1: command not found
current value in I is servr3
The server name found is servr1
-bash: [servr1: command not found
current value in I is servr4
The server name found is servr1
-bash: [servr1: command not found
在外壳中,空间很重要。
代替:
if [$SERVER_NAME == $i]
和:
if [ "$SERVER_NAME" = "$i" ]
如果没有空格,shell会认为您要运行带有参数和的名为[$SERVER_NAME
(例如[servr1
)的命令。有了空格,外壳程序会运行测试命令,用表示。==
$i]
[
另外,除非您了解要应用什么外壳扩展并且明确希望应用它们,否则请始终将外壳变量用双引号引起来。
最后,虽然bash在内部接受==
或=
等于字符串相等[...]
,但其他shell仅能理解=
。为了实现可移植性,最佳做法是将=
string-equal内部使用[...]
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句