bashprintf
関数を使用して入力ファイル内の文字のASCIIコードを印刷しますが、何らかの理由でprintf
出力LF
文字に10の代わりにASCIIコード0が表示されます。どんなアイデアがありますか?
while IFS= read -r -n1 c
do
ch=$(LC_CTYPE=C printf "%d\n" "'$c") # convert to integer
echo "ch=$ch"
done < input_file_name
printf
正直なところ、これが問題なのか、それとも関数が間違ったLF値を提供しているのかはわかりませんread
... bashコマンドを使用して文字をASCIIに変換する別の方法はありますか?
ベストアンサー1
まず、printf機能は完全に機能します。
$ export c=" "
$ LC_CTYPE=C printf "%d\n" "'$c"
32
ただし、-vxを使用してスクリプト行を実行すると、その行に到着するデータが正しくないことがわかります(この出力は貼り付けません)。
だから私はそれが読み取りエラーだと思います。読み取り用のデフォルトのEOL区切り文字は改行文字なので変更してみました。これは効果があると思います。
while IFS= read -d\0 -r -n1 c; do ch=$(LC_CTYPE=C printf "%d\n" "'$c") ; echo "ch=$ch"; done < input_file_name