如何从输出中获取每个字符串(主机名)?

时间:2018-06-04 08:21:40

标签: linux bash scripting

我正在尝试使用执行show命令的bash编写脚本,并从show输出中获取每个主机名(字符串)并对其执行操作(show命令)。

例如:

root@Router2:~$ show routers

Hostname1

Hostname2

Hostname3

我想获取每个主机名(主机名1,主机名2和主机名3)并对每个主机名执行操作。

以下是我的目标:

figlet Status code
u=$(tput smul)
b=$(tput bold)
n=$(tput sgr0)

echo "${b}${u}Enter server's name${n}"
read -e server
echo ""
Routershow$=(show routers)

之后,我想从$ Routershow输出中获取每个字符串(主机名)。我怎么能这样做?

由于

2 个答案:

答案 0 :(得分:0)

我通常使用while read x命令,其中" x"是变量名称:

show routers | while read routerName
do
    echo $routerName
done

答案 1 :(得分:0)

对您的命令(显示路由器)产生的所有项目(主机名)使用loop。例如:

for hostname in $(show routers)
do
  # access each hostname here. e.g.
  echo $hostname
done

或作为脚本的扩展名:

...
Routershow=$(show routers)
for hostname in $(echo $Routershow)
do
  # access each hostname here. e.g.
  echo $hostname
done