Bash | GREP主机名列表| While和For循环

Bash | GREP主机名列表| While和For循环,bash,shell,for-loop,while-loop,grep,Bash,Shell,For Loop,While Loop,Grep,我正在尝试从属性文件中获取/grep几个键值。我能够使用单个服务器作为完整主机名来获取它 工作示例: for i in hostname1; do echo $i ssh $i "egrep -w 'endpoint.address' /var/www/httpd/conf/server.properties" done endpoint.address=http://intserver-host/service/searchQuantity 输出: for i in hos

我正在尝试从属性文件中获取/grep几个键值。我能够使用单个服务器作为完整主机名来获取它

工作示例

for i in hostname1; do
    echo $i
    ssh $i "egrep -w 'endpoint.address' /var/www/httpd/conf/server.properties"
done
endpoint.address=http://intserver-host/service/searchQuantity
输出

for i in hostname1; do
    echo $i
    ssh $i "egrep -w 'endpoint.address' /var/www/httpd/conf/server.properties"
done
endpoint.address=http://intserver-host/service/searchQuantity
如果我想搜索主机名列表(主机名1到主机名50),我应该使用什么?我尝试了while和for循环,但没有成功

在和循环时使用
,不工作:

server="hostname"
count=1
servername="${server}$count"
echo "Server $servername"

echo "Entering into while loop"

while [  $count -lt 50 ]; do
    for i in servername; do
        echo $i
        ssh $i "egrep -w 'endpoint.address' /var/www/httpd/conf/server.properties"
    done
    let count=$((count+1))
done
结果:

Error: unknown servername  :|
有我不知道的把戏吗?感谢您的帮助/指点

for i in servername
应该是

for i in $servername
如果您解决了这个问题,您将看到,
$servername
不会更改每个迭代。仅在脚本顶部设置一次是不够的。您需要在每次循环开始时更新它

while [ $count -lt 50 ]; do
    servername="${server}$count"
    echo "$servername"
    ssh "$servername" egrep -w 'endpoint.address' /var/www/httpd/conf/server.properties
    let count=$((count+1))
done
此时,您可以切换到更简单的
for
循环

for ((i = 1; i <= 50; i++)); do
    servername="$server$i"
    echo "$servername"
    ssh "$servername" egrep -w 'endpoint.address' /var/www/httpd/conf/server.properties
done
应该是

for i in $servername
如果您解决了这个问题,您将看到,
$servername
不会更改每个迭代。仅在脚本顶部设置一次是不够的。您需要在每次循环开始时更新它

while [ $count -lt 50 ]; do
    servername="${server}$count"
    echo "$servername"
    ssh "$servername" egrep -w 'endpoint.address' /var/www/httpd/conf/server.properties
    let count=$((count+1))
done
此时,您可以切换到更简单的
for
循环

for ((i = 1; i <= 50; i++)); do
    servername="$server$i"
    echo "$servername"
    ssh "$servername" egrep -w 'endpoint.address' /var/www/httpd/conf/server.properties
done