다음과 같이 변수를 할당했습니다.
MYCUSTOMTAB=' '
하지만 에코에서 사용하면:
echo $MYCUSTOMTAB"blah blah"
또는
echo -e $MYCUSTOMTAB"blah blah"
그냥 반환단일 공간나머지 문자열은 다음과 같습니다.
blah blah
수정하지 않고 전체 문자열을 인쇄하는 방법은 무엇입니까? \t
내 취향에 비해 너무 넓어서 사용자 정의 들여쓰기에 사용하고 싶습니다 .
답변1
이를 방지하려면 변수를 큰따옴표로 묶어야 합니다.필드 분할, 어느먹다당신의 공간:
$ MYCUSTOMTAB=' '
$ echo "${MYCUSTOMTAB}blah blah"
blah blah
답변2
제안대로이 답변변수를 인용하는 것으로 충분합니다.
귀하의 경우에 인용문이 필요한 이유는 인용문이 없으면 bash가 Split+glob 연산자를 인용문에 적용하기 때문입니다 $MYCUSTOMTAB
. 기본값 $IFS
에는 TAB 문자가 포함되어 있으므로 echo -e $MYCUSTOMTAB"blah blah"
무엇 $MYCUSTOMTAB
이든 분할되어 동일하게 됩니다. 당신이 쓴 내용은 동일합니다:
echo -e "blah blah"
(그런데, 당신은 아마도 여기서 그것을 원하지 않을 것입니다 -e
).
printf
대신 사용할 수도 있습니다 echo
.
printf '%s\n' "$MYCUSTOMTAB"
printf '%s\n' "${MYCUSTOMTAB}blah blah"
printf
또는 동일한 유형의 \n
확장을 수행하려면 다음 \t
을 대신 echo -e
사용하십시오 .%b
%s
printf '%b\n' "${MYCUSTOMTAB}blah blah"
참고용으로 읽으세요왜 printf가 echo보다 나은가요?
답변3
변수에 큰따옴표를 사용해야 한다고 생각합니다.
echo -e "$MYCUSTOMTAB"."blah blah"
답변4
귀하의 질문에 태그가 붙어 있다는 것을 알고 있지만 bash
어쨌든 최대의 이식성과 신뢰성을 위해 다음을 사용하겠습니다.
printf "%sblah blah\n" "$MYCUSTOMTAB"
또는
someString="blah blah"
printf "%s%s\n" "$MYCUSTOMTAB" "$someString"