したがって、このコードは正しく機能します。 「$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
有効な10進数ではないため、printfでエラーが発生します。
文字列を二重引用符で囲むと、シェルは変数拡張を実行します。この場合、変数の整数値を返し、i
printfはこれに満足します。