echo \"$(hostname -I)\"
"111.111.111 "
추가 공간을 피하고 출력을 다음으로 변경하려면 어떻게 해야 합니까?"111.111.111"
답변1
명령이 공백을 인쇄하면 출력에 포함됩니다. 음, 실제로는 명령 대체가 인용되지 않았기 때문에 결과가 토큰화되고 두 문자열 "111.111.111
과 합계가 두 개의 다른 인수로 전달된 "
다음 단일 공백으로 연결되어 인쇄됩니다. 여기서는 출력이 변경되지 않지만 다른 많은 경우에는 중요합니다. 명령 교체 후 아무것도 없으면 단어 분할 과정에서 공백이 사라집니다.echo
echo
echo
여러 IP 주소를 인쇄할 수 있으므로 hostname -I
후행 공백을 인쇄할 가능성이 높으며 마지막 공백을 건너뛰는 것보다 각 IP 주소 뒤에 공백을 인쇄하는 것이 더 간단합니다.
공백을 제거하려면 접미사 제거 확장을 사용할 수 있습니다.
ip="$(hostname -I)"
ip="${ip% }"
printf '"%s"\n' "$ip"
또는 분사를 활용해 보세요:
printf '"%s"\n' $(hostname -I)
후자는 공백으로 구분된 각 IP 주소를 개별적으로 인용하고 한 줄에 하나씩 인쇄합니다.