stdout이 터미널이 아닐 때 "ls -l" 명령을 실행할 때 줄바꿈을 활성화하는 방법

stdout이 터미널이 아닐 때 "ls -l" 명령을 실행할 때 줄바꿈을 활성화하는 방법

명령을 변수에 저장 cmd하고 다음 명령문을 사용하여 명령의 출력을 얻습니다.

echo `$cmd`

줄 바꿈이 누락된 것을 제외하고는 모든 것이 잘 작동합니다 ls -l.

답변1

명령을 문자열 변수에 저장한 경우 이를 실행하려면 다음이 필요합니다.

eval "$cmd"

$cmd이는 명령에 공백을 제외한 쉘 특수 문자가 포함되지 않은 경우에만 작동합니다. 일반적으로 문자열 변수에 명령을 저장하는 것은 좋지 않습니다. 함수를 정의하는 것이 더 좋습니다.

cmd () {
  ls -l
}

그런 다음 실행할 수 있습니다 cmd.

가장 즉각적인 문제는 따옴표 없이 명령 대체를 사용하기 때문에 명령 출력이 더 손상된다는 것입니다. 변수 및 명령 대체에는 큰따옴표를 사용해야 합니다. cmd함수로 정의됩니다 :

echo "`cmd`"

복잡한 명령으로 인해 당황하지 않으려면 백틱 대신 달러 괄호를 사용하세요.

echo "$(cmd)"

바라보다공백이나 기타 특수 문자 때문에 쉘 스크립트가 멈추는 이유는 무엇입니까?설명을 위해.

관련 정보