Bash에서 printf를 사용할 때 항상 아래와 같이 형식 문자열을 제공해야 합니다.
printf "" "V01 Oct 2021"
아니면 printf "V01 Oct 2021"
여전히 가능합니까?
답변1
형식 문자열을 사용하는 것이 좋습니다 printf
. 예를 들어,
printf '%s' 'V01 Oct 2021' # V01 Oct 2021
빈 형식 문자열을 사용하면 인수를 인쇄하라는 명령이 없기 때문에 빈 결과를 얻게 됩니다.
printf '' 'V01 Oct 2021' # (nothing)
다음 경우에는 문자열에 형식 제어 문자가 포함되어 있지 않으므로 매개변수 값 없이 형식 문자열만 사용할 수 있습니다.
printf 'V01 Oct 2021' # V01 Oct 2021
그러나 변수를 삽입하려면 다음을 수행해야 합니다.안 돼요-
or 로 끝나고 %
or 문자(또는 bash의 내장 구현을 포함하여 대부분의 구현 인코딩을 포함하는 다른 문자 인코딩 \
) 를 포함 하는 경우를 대비하여 형식 문자열에 추가합니다 . 예를 들어,%
\
printf
d=5; a="Increase by $d%"
printf "$a" # -bash: printf: `%': missing format character
printf "$a\n" # -bash: printf: `\': invalid format character
printf '%s\n' "$a" # Increase by 5%
printf 'Increase by %d%%\n' "$d" # Increase by 5%
두 번째 예에서는 그 \n
자체로 잘못된 것은 아니지만 %
끝에 있는 기호가 $a
혼란스럽습니다 printf
.