에코보다 Printf를 사용하는 이유
3179 단어 devopscommandlinescripting
echo는 텍스트를 표준 출력으로 인쇄하는 더 널리 알려진 명령이지만 다양한 구현에서 동작 및 설명서 불일치를 발견했습니다1.
macOS 에코 매뉴얼 페이지:
우분투 에코 매뉴얼 페이지:
또한 기본 동작은 base64와 같은 문자에 민감한 명령과 결합할 때 의도하지 않은 결과를 초래할 수 있습니다. 다음은 echo로 인해 문제가 발생한 몇 가지 사용 사례입니다.
비밀 관리에 넣을 Base64 인코딩 자격 증명(Hashicorp Vault, kubernetes 등)
#!/usr/bin/env bash
PASSWORD="supersecretpassword"
# echo output
echo "${PASSWORD}" | base64
c3VwZXJzZWNyZXRwYXNzd29yZAo=
# printf output
printf "${PASSWORD}" | base64
c3VwZXJzZWNyZXRwYXNzd29yZA==
Echo는 base64 명령으로 파이프된 출력에 전달되고 base64로 인코딩된 출력에도 표시될 줄 바꿈을 출력 끝에 추가합니다.
스크립트 출력하기
원하는 출력
one line
two line
three line
four
스크립트
#!/usr/bin/env bash
INPUT="one line\ntwo line\nthree line\nfour"
# echo output
echo "${INPUT}"
one line\ntwo line\nthree line\nfour
# printf output
printf "${INPUT}"
one line
two line
three line
four
원하는 출력은
echo
인수와 함께 -e
를 사용하여 얻을 수 있지만 위의 스크린샷에 표시된 것처럼 항상 문서화되어 있지는 않습니다.https://unix.stackexchange.com/a/65819 ↩
Reference
이 문제에 관하여(에코보다 Printf를 사용하는 이유), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/soohoowoohoo/why-i-use-printf-over-echo-32nm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)