Linux 使用printf打印ascii字符,但printf不会以八进制打印任何大于100的字符

Linux 使用printf打印ascii字符,但printf不会以八进制打印任何大于100的字符,linux,printf,Linux,Printf,我想滚动浏览八进制数字列表,并打印出它们的ASCII等价物。我可以用它来做这件事 i=48 while [ $i -le 63 ] do o=`echo "obase=8; $i" | bc` printf "\0$o\n" i=`expr $i + 1` done 但是,如果将范围更改为64八进制100以打印@,printf\0$o\n将无法识别3位八进制代码 为了能够打印3位八进制数字的ascii码,我应该使用printf的什么语法?根据sh1手册页,printf在转义八

我想滚动浏览八进制数字列表,并打印出它们的ASCII等价物。我可以用它来做这件事

i=48
while [ $i -le 63 ]
do
   o=`echo "obase=8; $i" | bc`
   printf "\0$o\n"
   i=`expr $i + 1`
done
但是,如果将范围更改为64八进制100以打印@,printf\0$o\n将无法识别3位八进制代码


为了能够打印3位八进制数字的ascii码,我应该使用printf的什么语法?

根据sh1手册页,printf在转义八进制码时不需要前导0。它只是printf'\100'

好的,我已经对它进行了排序。下面的shell处理3位八进制。我意识到我不需要在printf命令中将数字指定为八进制。另外,请注意双反斜杠。i=48,而[$i-le127]do o=echo obase=8$i | bc printf\\\$o\n i=expr$i+1完成