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

Linux 如何或多或少地在bash脚本中使用,linux,bash,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

好的,我有一个很大的服务器列表,我写了一个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 : 

好的,一旦我把数字给提示符,其中一个菜单有很多项,可以在屏幕上滚动。我希望一次只查看一页。

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

#!/bin/bash
...
cat file* | less
...
一旦到达
cat
(或任何命令),将开始分页输出

我曾经编写自述文件,其中第一行包括:

#!/usr/bin/less

当您执行自述文件时,它将为自述文件分页。自动分页文本文件。

将服务器列表存储在字符串或中,并通过寻呼机或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

是的,有可能。你试过什么?
你的脚本| less
是作弊吗?)我试着用管道传送…不一样…我的问题不够清楚吗@Buffen@jim66那是行不通的。事实上不是这样……你能重新阅读我的帖子吗?@user212064你仍然没有发布任何代码。不要覆盖用户的寻呼机设置,并且只有在输出是tty:
的情况下,如果测试-t1;然后P=${PAGER less};否则P=猫;菲。。。cmd |${P}
(让用户适当地设置路径。)@williampersell为了这个答案,我们不能简单地假设设置了寻呼机,在这里设置它会使答案自包含。如果OP不想依赖寻呼机,他总是可以少编或多编硬代码。然而,我们应该假设tty/pty,因为它是面向用户的菜单。我的目标不是解决所有可能的边缘问题;只是OP的目标。YMMV。当用户设置了寻呼机时,应始终遵守。这是一个常见的惯例,作为一个用户运行一个覆盖这些内容的脚本是非常烦人的。您不需要解决所有边缘问题,但遵守标准约定是绝对必要的,尤其是在回答入门级问题时。