반응형
명령 출력을 bash의 변수에 저장할 때 줄 바꿈을 유지하는 방법은 무엇입니까?
Linux에서 bash 셸을 사용하고 있습니다. 이 간단한 스크립트가 있습니다.
#!/bin/bash
TEMP=`sed -n '/'"Starting deployment of"'/,/'"Failed to start context"'/p' "/usr/java/jboss/standalone/log/server.log" | tac | awk '/'"Starting deployment of"'/ {print;exit} 1' | tac`
echo $TEMP
하지만이 스크립트를 실행하면
./temp.sh
모든 출력은 캐리지 리턴 / 새 줄없이 인쇄됩니다. 출력을 $ TEMP에 저장하는 방식인지 에코 명령 자체인지 확실하지 않습니다.
명령의 출력을 변수에 저장하고 줄 바꿈 / 캐리지 리턴을 유지하려면 어떻게해야합니까?
변수를 인용 하십시오. 그 이유는 다음과 같습니다.
$ f="fafafda
> adffd
> adfadf
> adfafd
> afd"
$ echo $f
fafafda adffd adfadf adfafd afd
$ echo "$f"
fafafda
adffd
adfadf
adfafd
afd
따옴표가 없으면 쉘은 $TEMP
포함 된 문자로 대체 됩니다 (그 중 하나는 개행 문자 임). 그런 다음 echo
쉘 을 호출하기 전에 Internal Field Separator
(IFS)를 사용하여 해당 문자열을 여러 인수로 분할 하고 결과 인수 목록을 echo
. 기본적으로는 IFS
공백 (공백, 탭 및 줄 바꿈)으로 설정되어 있으므로 셸은 $TEMP
문자열을 인수로 자르고 줄 바꿈을 볼 수 없습니다. 셸은 공백처럼 구분자로 간주하기 때문입니다.
같은 문제가 발생했습니다. 견적이 도움이 될 것입니다.
ubuntu@host:~/apps$ apps="abc
> def"
ubuntu@host:~/apps$ echo $apps
abc def
ubuntu@host:~/apps$ echo "$apps"
abc
def
반응형
'Nice programing' 카테고리의 다른 글
불씨 링크에 수업 추가 (0) | 2021.01.10 |
---|---|
Gnome 터미널의 배경 설정을 재정의하는 Vim 색 구성표 (0) | 2021.01.10 |
dplyr mutate rowSums 계산 또는 사용자 지정 함수 (0) | 2021.01.10 |
Docker 컨테이너에서 영구적으로 PATH 환경 변수 업데이트 (0) | 2021.01.10 |
msi 설치 후 exe를 실행 하시겠습니까? (0) | 2021.01.10 |