for ((i=000;i<040;i++));do ...
0から39まで、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
変!?
70から154までの85の値があります。
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
欠測値を説明する完全な答えが必要でした。
:-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
物事がより明確になります!
for ((i=0070;i<0155;i++));do
echo -e $(eval "printf "\\\\%04o" $((19+0$i)) ")
done 2> >(wc -l >&2) | xargs
27
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
実際には27のエラーがあり、値は... 56から108です:
printf "%d\n" 0070 0155
56
109
わかりました。8進数なので、85の値はありませんが、53の値があります。
echo $(( 155 - 70 )) $(( 0155 - 0070 )) $(( 109 - 56 ))
85 53 53
これにより、27個のエラーで53個の値が作成されます。
echo $((53-27))
26
はい!
これは(私のアルファベットで)正しい文字数です!
結論
質問は次のように書き直すことができます。
虐待が
/dev/null
どのように奇妙な行動を起こす可能性があるか
したがって、STDERRをリダイレクトするときは注意して、次のようなコマンドを使用することをお勧めします。
command 2> >(grep -v "unwanted message" >&2)