
두 줄이 포함된 변수가 있는데 $myvar
그 중 첫 번째 줄을 새 변수에 넣고 싶습니다.
내가 시도할 때:
$ myvar1 = $(echo $myvar | head -n 1)
echo가 예상한 대로 개행 문자를 출력하지 않기 때문에 작동하지 않습니다.
분명히 나는 이것을 할 수 있습니다 :
$ myvar1 = $(echo $myvar | cut -d " " -f 1)
echo의 출력에는 첫 번째 줄에 한 단어가 있고 두 번째 줄에 한 단어가 포함되어 있으므로 작동합니다.
두 가지 질문이 있습니다.
- 줄바꿈 대신 공백을 인쇄하는 이유는 무엇입니까?
- 더 쉽게 또는 더 정확하게 만들 수 있습니까? (저는 쉘 스크립팅 전문가가 아닙니다. 여기에 뭔가 빠졌을 수도 있습니다.)
답변1
공백을 적절하게 유지하려면 인수를 echo
따옴표로 묶습니다.
echo "$myvar"
그렇지 않으면 공백으로 구분된 값 요소가 에 대한 개별 인수로 처리됩니다 echo
.
$ ls -1
Desktop
Documents
Downloads
Movies
Music
Pictures
Sites
$ myvar="$( ls -1 )"
$ echo $myvar
Desktop Documents Downloads Movies Music Pictures Sites
$ echo "$myvar"
Desktop
Documents
Downloads
Movies
Music
Pictures
Sites
무언가의 첫 번째 줄을 얻으려면 head -n1
완벽하게 작동합니다. 실제로 필요한지 여부는 요구 사항과 가능한 값에 따라 다릅니다.