특정한 경우에 추가 따옴표를 사용하지 않고 끝에 공백을 표시하려면 어떻게 해야 합니까? [복사]

특정한 경우에 추가 따옴표를 사용하지 않고 끝에 공백을 표시하려면 어떻게 해야 합니까? [복사]

다음 bash 스크립트를 고려하십시오.

~$ x="echo -n abc "

~$ $x && echo xyz
abcxyz

~$

호기심 때문에(원하는 대로), echo -n무언가를 출력하는 명령이 포함된 bash 변수를 원합니다. 후행 공백을 유지하는 방식으로 정의할 수 있는지 궁금합니다.

확실한 선택은 따옴표를 사용하는 것입니다.

~$ x="echo -n \"abc \""

~$ $x && echo xyz
"abc "xyz

~$

그러나 이러한 인용문은 출력을 오염시킬 것입니다.

물론 두 번째 echo 명령 앞에 공백을 추가할 수도 있습니다.

~$ x="echo -n abc "

~$ $x && echo " xyz"
abc xyz

~$

그러나 질문의 ​​목적은 x후행 공백이 출력에 추가 따옴표가 없음을 의미하는 방식으로 변경될 수 있는지 확인하는 것입니다.$xecho -n

매우 감사합니다.

답변1

이건 괴로워명령을 변수에 넣으려고 했지만 복잡한 경우는 항상 실패합니다!

해결책은 배열을 사용하는 것입니다.

$ x=(echo -n "abc ")
$ "${x[@]}" && echo xyz
abc xyz

관련 정보