2014-09-05 1 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

+0

'yourscript | 덜 '부정 행위입니까? ;) – jm666

+0

나는 그것을 piping하려고 노력하고 있었다. .. 동일하지 않은. .. 나는 나의 쿼리에서 충분히 명확하지 않은가? ??? @Buffen – user212064

답변

0

예, 당신은 bash는 스크립트에 더 많거나 적은을 호출 할 수 있습니다

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

그것이 cat (또는 무엇이든 명령)에 도달하면 출력을 paginating 시작합니다. 당신은 README를 실행하면

#!/usr/bin/less 

, 그것은 README 페이지를 매기는 것입니다 :

나는 구성된 첫 번째 줄을했다 README 파일을 작성하는 데 사용됩니다. 자체 페이지 매김 텍스트 파일.

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

PAGER의 사용자 설정을 무시하지 말고 출력이 tty에 대해서만 수행하십시오 :'if test -t 1; P = $ {PAGER-less}; else P = cat; fi ... cmd | $ P}'(사용자가 PATH를 적절하게 설정하도록하십시오.) –

+0

@WilliamPursell이 대답의 목적 상, * PAGER *가 설정되어 있다고 가정 할 수 없으며 여기에 설정하면 대답 자체가 포함됩니다. 영업 담당자는 * PAGER *에 의존하기를 원하지 않는다면 항상 하드 코딩 할 수 있습니다. 그러나 사용자가 직접 메뉴이기 때문에 tty/pty로 가정해야합니다. 내 목표는 가능한 모든 최악의 경우를 해결하는 것이 아닙니다. OP의 명시된 목표에 불과합니다. YMMV. –

+0

사용자가 PAGER를 설정하면 항상 명예를 가져야합니다. 그것은 일반적인 관례이며, 사용자가되고 그런 것을 무시하는 스크립트를 실행하는 것은 매우 짜증나게됩니다. 모든 엣지 케이스를 해결할 필요는 없지만, 특히 입문 레벨 질문에 대답 할 때 표준 관례를 존중하는 것이 절대적으로 필요합니다. –

관련 문제