Grave 연산자가 명령의 출력 형식을 변경하는 이유는 무엇입니까? [복사]

Grave 연산자가 명령의 출력 형식을 변경하는 이유는 무엇입니까? [복사]

안녕하세요 글을 쓰면서 이유를 묻고 싶습니다.

  ls -l

각 줄 뒤에 새 줄이 있지만 변수에 할당하면

myVariable=`ls -l`

그런 다음 해당 변수를 에코합니다.

echo $myVariable

한 줄로 다 연결했는데... 감사합니다

답변1

이 질문은 두 가지 별도의 문제를 야기합니다.

  1. 명령 은 ls파일이나 파이프에 쓸 때와 터미널에 쓸 때 다르게 동작합니다. 이 두 명령을 비교하면 이를 알 수 있습니다.

    ls
    ls | cat
    

    첫 번째 예에서는 ls터미널에 쓰고 있으므로 사람이 읽을 수 있도록 출력 형식을 지정하는 것을 볼 수 있습니다. 두 번째 예에서는 ls파일이나 파이프에 쓰고 있으므로 한 줄에 하나의 항목을 생성하는 것을 볼 수 있습니다. -1또는 매개변수를 사용하여 -C두 설정을 모두 재정의 할 수 있습니다 .

  2. 변수에 할당하면 ls -l줄 바꿈이 유지됩니다 . 그러나 귀하의 경우 변수를 사용할 때 변수를 인용하지 않으므로 "공백"(표시되는 문자를 인쇄하지 않는 모든 것)은 실행될 때마다 단일 공백으로 변환됩니다. 결과 비교

    var=$(ls -l); echo $var
    var=$(ls -l); echo "$var"
    

바라보다$VAR 대 ${VAR} 및 인용 여부자세한 내용을 알아보세요. 또한 나는 에서 제안한 중복 답변을 $(...)선호합니다 .`...`백틱 이해이유를 설명했습니다.

관련 정보