printf
then 명령을 사용하는 코드가 있습니다 echo
. 내 이해에 따르면 echo
줄 바꿈은 기본적으로 발생하지만 나중에 사용할 때는 발생하지 않습니다 printf
. 코드는 다음과 같습니다.
#!/bin/bash
function login
{
printf "\n%s" "Please enter ${1} password: "
read -s passcode
}
for i in root admin; do login $i; done
echo "just something"
"\n%s"
이 루프에서 여러 사용자를 사용할 수 있으므로 이 코드에서는 중요합니다. 출력은 다음과 같습니다.
[root@host ]# /tmp/test.sh
Please enter root password:
Please enter admin password: just something
[root@host ]#
루프 뒤에 를 추가하고 새 행을 생성하면 echo ""
간단히 해결할 수 있다는 것을 알고 있지만 printf
루프가 있는 동안 작동하는 이유와 이후에는 작동하지 않는 이유가 무엇인지 궁금합니다 echo
.
답변1
echo
문자열의 시작 부분이 아닌 끝 부분에 개행 문자를 출력합니다.
printf
\n
개행 문자로 해석되지만 \n%s
출력 후가 아닌 나머지 부분 앞에 인쇄됩니다.
사용으로 인해 read -s
로컬 터미널을 억제했습니다.에코또한 사용자가 누를 때 Enter입력되는 내용을 억제합니다.에코.
어쨌든, 비밀번호를 읽는 구문은 IFS= read -r passcode
그렇지 않으면 $IFS
비밀번호에 백슬래시나 문자가 포함되어 있으면 작동하지 않습니다.