Linux 如何或多或少地在bash脚本中使用
好的,我有一个很大的服务器列表,我写了一个bash脚本来登记它们。但问题是它在终端上滚动 我需要这些的分页视图 是否可以在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
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。当用户设置了寻呼机时,应始终遵守。这是一个常见的惯例,作为一个用户运行一个覆盖这些内容的脚本是非常烦人的。您不需要解决所有边缘问题,但遵守标准约定是绝对必要的,尤其是在回答入门级问题时。