Bash
將十進制列印為 ascii 字元,我的命令未按預期輸出
我想使用以下命令輸出所有 ascii 字元的字元串
for i in `seq 32 127`; do printf "%c" $i; done
上述命令的輸出是:
33333334444444444555555555566666666667777777777..............
它是每個數字的第一個(左起)數字。
通過這個站點,我發現了我的問題的答案如何在 CLI 中列印所有可列印的 ASCII 字元?,但是我仍然不明白為什麼我的原始程式碼段沒有按預期輸出 ascii 字元。
您不能通過
printf "%c" $i
在 C 中使用 like來直接列印 ascii 程式碼。您必須首先將 i 的十進制值轉換為其八進制值,然後您必須使用 using 列印它
printf
並將其放在\
各自的八進制值前面。要列印
A
,您必須將十進制 65 轉換為八進制,即 101,然後您必須將該八進制值列印為:printf "\101\n"
這將列印
A
.因此,您必須將其修改為:
for i in `seq 32 127`; do printf \\$(printf "%o" $i);done;
但是通過使用
awk
你可以像 C 語言一樣直接列印awk 'BEGIN{for(i=32;i<=127;i++)printf "%c",i}';echo