如何在bash脚本中使用或多或少

时间:2014-09-05 10:13:30

标签: linux bash

好的,我有很多服务器列表,我写了一个bash脚本来征集它们。但问题是它滚动终端。

我需要一个分页视图。

是否可以在bash脚本中添加或更少?

say ,
1
.
.
.
1000

一次一页。

我有这段代码:

Staging_Servers)

  echo " Staging server list should go here"
;;

UAT_Servers)

  echo " UAT server list should go here"
;;

Prod_Servers)

 echo " Prod server list should go here"
;;

其中一人长期上市。

运行脚本后,它会显示如下菜单:

1) Jenkin_Servers   5) Prod_Servers        9) DB-Staging
2) Nagios_Servers       6) Proxy_Servers      10) DB-Prod
3) Staging_Servers      7) Dedicated_Servers
4) UAT_Servers          8) Shared_Servers
Please enter the required number : 

好的,一旦我将数字提供给提示,其中一个菜单有很多项目滚动屏幕。我希望一次只能看到一页。

2 个答案:

答案 0 :(得分:0)

是的,您可以在bash脚本中调用更多或更少:

#!/bin/bash
...
cat file* | less
...

一旦到达cat(或任何命令),就会开始对输出进行分页。

我以前编写的README文件的第一行包含:

#!/usr/bin/less

当您执行README时,它会对README进行分页。自分页文本文件。

答案 1 :(得分:0)

将您的服务器列表存储在字符串或array中,并通过 PAGER 回显输出,或通过less显式回显。例如:

export PAGER='/usr/bin/less'
case $list_name in
    Staging_Servers)
        echo "${staging_servers[@]}" | "$PAGER"
        ;;
    UAT_Servers)
        echo "${uat_servers[@]}" | "$PAGER"
        ;;
    Prod_Servers)
        echo "${prod_servers[@]}" | "$PAGER"
        ;;
esac