从0到40,有40步?...用于打印 A到Z???
for ((i=000;i<040;i++));do
echo -e $(eval "printf "\\\\%04o" $((65+0$i)) ");
done 2>/dev/null |
xargs
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Run Code Online (Sandbox Code Playgroud)
奇怪!?
共有85个步骤,从70到155:
for ((i=0070;i<0155;i++));do
echo -e $(eval "printf "\\\\%04o" $((19+0$i)) ");
done 2>/dev/null |
xargs
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Run Code Online (Sandbox Code Playgroud)
我想要一个完整的答案,解释14(59)个不需要的步骤.
:-P
由于这个问题已经结束,所以无法添加答案,所以有我的解释:
误解是通过使用2>/dev/null!! 来完成的!
所以,简单地删除它将会:
for ((i=0070;i<0155;i++));do
echo -e $(eval "printf "\\\\%04o" $((19+0$i)) ");
done |
xargs
bash: 19+058: value too great for base (error token is "058")
bash: 19+059: value too great for base (error token is "059")
...
bash: 19+098: value too great for base (error token is "098")
bash: 19+099: value too great for base (error token is "099")
bash: 19+0108: value too great for base (error token is "0108")
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Run Code Online (Sandbox Code Playgroud)
事情变得更加清晰!
for ((i=0070;i<0155;i++));do
echo -e $(eval "printf "\\\\%04o" $((19+0$i)) ")
done 2>&1 >/dev/null |
wc -l
27
Run Code Online (Sandbox Code Playgroud)
事实上有27个错误,数字介于58和108之间......
echo $((070)) $((0155))
56 109
Run Code Online (Sandbox Code Playgroud)
好的,它是八进制的.
echo $(( 155 - 70 )) $(( 0155 - 070 )) $(( 109 - 56 ))
85 53 53
Run Code Online (Sandbox Code Playgroud)
这使得53步,而不是85步!
echo $((53-27))
26
Run Code Online (Sandbox Code Playgroud)
是!
这是正确的字母数(在我的字母表中)!
这个问题可以改写为:
如何滥用
/dev/null可能会造成奇怪的行为
...希望这可以帮助别人.