따라서 이 코드는 제대로 작동합니다. "$i"는 큰따옴표로 묶여 있습니다.
for ((i=0; i <= 10; i++)); do
printf '%d\n' "$i"
done
그러나 "$i"를 작은따옴표('$i')로 묶으면 10번만 반복됩니다.
bash: printf: $i: invalid number
0
왜? 이 질문에는 버그 보고서가 포함되어 있으며 모든 사람이 말하는 것처럼 철학적이지는 않습니다. 이것이 "나쁜 문제"라고 결정하기 전에는 인터넷의 모든 내용을 읽을 수 없습니다.
답변1
문자열을 작은따옴표로 묶으면 쉘은 문자열에서 변수 확장을 수행하지 않습니다. 리터럴 문자열을 얻습니다. printf 명령의 경우 값이 $i
유효한 십진수가 아니므로 printf에서 오류가 발생합니다.
문자열을 큰따옴표로 묶으면 쉘은 변수 확장을 수행합니다. 이 경우 변수의 정수 값을 반환 i
하고 printf는 이에 만족합니다.