반응형
셸 변수에 grep 결과를 할당 한 후 줄 바꿈이 없음
#!/usr/local/bin/bash
out=`grep apache README`
echo $out;
일반적으로 grep은 명령 줄에서 실행할 때 각 일치 항목을 별도의 줄에 표시합니다. 그러나 위의 스크립트에서는 각 일치 항목을 구분하는 줄 바꿈이 사라집니다. 개행을 보존 할 수있는 방법을 아는 사람이 있습니까?
과제에서 잃는 것이 아니라 메아리에서 잃어 버리는 것입니다. 다음과 같은 경우 명확하게 볼 수 있습니다.
echo "${out}"
다음 스크립트에서 비슷한 효과를 볼 수 있습니다.
x="Hello,
I
am
a
string
with
newlines"
echo "====="
echo ${x}
echo "====="
echo "${x}"
echo "====="
다음을 출력합니다.
=====
Hello, I am a string with newlines
=====
Hello,
I
am
a
string
with
newlines
=====
그리고 귀하의 질문과 관련이 없지만 어쨌든 언급하고 싶습니다. 명령을 중첩 할 수 있다는 추가 이점을 위해 백틱 대신 $ () 구문을 사용하는 것을 선호합니다. 따라서 스크립트 줄은 다음과 같습니다.
out=$(grep apache README)
이제는 다르게 보이지 않을 수도 있지만 다음과 같은 더 복잡한 명령을 가능하게합니다.
lines_with_nine=$(grep $(expr 7 + 2) inputfile)
$ out을 따옴표로 묶습니다.
#!/usr/local/bin/bash
out=`grep apache README`
echo "$out";
bash에서 인용 변수는 공백을 유지합니다.
예를 들면 :
#!/bin/bash
var1="A B C D"
echo $var1 # A B C D
echo "$var1" # A B C D
since newlines are whitespace they get "removed"
반응형
'UFO ET IT' 카테고리의 다른 글
PHP의 생성자에 대한 __construct () 대 SameAsClassName () (0) | 2020.11.10 |
---|---|
최신 C 및 C ++에서 f (void)가 더 이상 사용되지 않습니다. (0) | 2020.11.10 |
SVN 저장소에서 svn : ignore로 설정된 무시 된 패턴을 모두 재귀 적으로 보려면 어떻게해야합니까? (0) | 2020.11.10 |
Python 예외가 "오류"로 명명 된 이유는 무엇입니까? (0) | 2020.11.10 |
Windows 배치 파일에서 부분 문자열을 바꾸는 방법 (0) | 2020.11.10 |