От 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
странно!?
Существует 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
Я хотел бы получить полный ответ, объяснив 𝒂𝒍𝒍 14 (59) нежелательные шаги.
: - р
Полный ответ
Поскольку этот вопрос был закрыт, ответа не было добавлено, поэтому есть my пояснение:
Недостатки выполняются с помощью 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
Все становится яснее!
for ((i=0070;i<0155;i++));do
echo -e $(eval "printf "\\\\%04o" $((19+0$i)) ")
done 2>&1 >/dev/null |
wc -l
27
На самом деле существует 27 ошибок, о числах от 58 до 108...
echo $((070)) $((0155))
56 109
Хорошо, он восьмеричный.
echo $(( 155 - 70 )) $(( 0155 - 070 )) $(( 109 - 56 ))
85 53 53
И это делает 53 шага, а не 85!
echo $((53-27))
26
Да!
Это правильное количество букв (в моем алфавите)!
Заключение
Вопрос можно переписать как:
Как злоупотребление
/dev/null
может вызвать странное поведение
... В надежде, это может помочь кому-то.