Bash 루프 사용

Bash 루프 사용

스크립트에서 사용하는 명령이 있는데 잘 작동합니다. 이 명령의 결과에 일부 텍스트를 추가해야 합니다.

주문하다:

ssh target_server "/home/directory/somescript.sh" | tail -1

위 명령의 결과에 텍스트를 추가하고 싶습니다.

결과의 예:

This is the original result

예상 결과 예:

This is the original result - target_server

답변1

파이프로 연결하다sed:

ssh target_server "/home/directory/somescript.sh" | tail -1 | sed 's/$/ - target server/'

구문은 입니다 s/regexp/replacement/flags.

  • s대체 명령을 호출합니다.
  • /구분 기호입니다. 다른 문자를 구분 기호로 선택할 수 있습니다.
  • $정규식 슬롯에 있습니다. $줄의 끝과 일치합니다.
  • - target server정규식 슬롯과 일치하는 콘텐츠를 대체하는 텍스트입니다.

대체 텍스트에 /(예: - target 01/10)가 포함된 경우 이를 이스케이프 처리하거나 다른 구분 기호를 선택할 수 있습니다.

sed 's/$/ - target 01\/10/'
sed 's|$| - target 01/10|'

답변2

다음을 시도해 볼 수 있습니다.

Bash 루프 사용

cmd | while read line; do echo "$line - target_server"; done

이는 bash 내장만 사용하므로 생성/파괴되는 프로세스 수가 더 적습니다.

배쉬 기능 사용

간단한 bash 기능을 만들 수도 있습니다. 정의는 다음과 같습니다:

function postpend() { 
    while read line; do 
        echo "${line}${1}"; # Insert text parameter after the line.
    done;
}

그러면 다음과 같이 호출할 수 있습니다.

cmd | postpend " - target_server" 

AWK 사용

command | awk 'END{print $0 " - target_server"}'

sed 사용

command | tail -1 | sed 's/$/ - target server/'

이게 도움이 되길 바란다.

관련 정보