2014-09-05 49 views
-2

好吧,我有大量的服務器,我寫了一個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 : 

好了,一旦我給數以菜單的提示一個有很多的項目,其屏幕的滾動。我想一次只看一頁。

+0

是的,這是可能的。你有什麼嘗試? – Biffen 2014-09-05 10:19:09

+0

'yourscript |少'是欺騙? ;) – jm666 2014-09-05 10:19:28

+0

我試圖給它滾動雖然...不一樣...我不清楚我的查詢? @Buffen – user212064 2014-09-05 10:23:35

回答

0

是的,你可以調用一個bash腳本,或多或少:

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

將開始,一旦它到達cat(或者是任何命令)分頁輸出。

我用來編寫了由第一線的README文件:

#!/usr/bin/less 

當你執行的自述,這將分頁的自述。自分頁文本文件。

0

將您的服務器列表存儲在一個字符串或array中,並通過您的PAGER回顯輸出,或顯式地通過減少。例如:

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 
+2

不要覆蓋尋呼機的用戶的設置,也只有這樣做,如果輸出是一個tty:'如果測試-t 1;那麼P = $ {PAGER-less};別的P =貓; fi ... cmd | $ {P}'(適當地讓用戶設置PATH) – 2014-09-05 13:18:09

+0

@WilliamPursell對於這個答案的目的,一個根本無法承擔* PAGER *設置,這裏設置它使得答案自成體系。如果OP不想依靠* PAGER *,則OP總是可以更少或更少地進行硬編碼。但是,一個*應該*假設一個tty/pty,因爲它是一個面向用戶的菜單。我的目標不是要解決每一個可能的邊緣案例;只是OP的既定目標。因人而異。 – 2014-09-05 14:38:01

+0

用戶在設置PAGER時應該始終遵守。這是一個常見的慣例,作爲用戶並運行覆蓋這些事情的腳本是非常煩人的。你不需要解決每一個邊緣案例,但是遵守標準約定是絕對必要的,特別是在回答介紹性問題時。 – 2014-09-05 16:55:51