- ベストアンサー
シェルスクリプト(.sh)で、10進数文字を16進数へ変換したい
shスクリプトについて質問です。 10進数の0~15までが入った配列の値を、 10~15だけ、16進数のA~Fに変えたいです。 trコマンドで、"[:digit:]"っていうのがあったのですが、 全く使い方が見当たりませんでした^^; 何か一例いただけないでしょうか^^; 別にtrコマンドでなくても良いので、 どのようにすれば、shスクリプト内でやりたい事が できるか、教えていただけないでしょうかm(__)m
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
ご質問の主旨を誤解していました。 下記でできます。 ------------------------------------- i=13 i=$(printf "%x" $i) echo $i
その他の回答 (5)
- notnot
- ベストアンサー率47% (4900/10359)
>: command not found >: invalid number 4: printf: 13 改行コードがCRLF(Windows用)になってますね。Windowsで作成したファイルをバイナリモードでftpしたのですか? ファイルはLinux上でゼロから作るか、ftpするならテキストモードで。
お礼
ありがとうございます。 FTPでやってるんですが何故だろう。 一回、Linux上でファイル作ってみます。
- kmee
- ベストアンサー率55% (1857/3366)
> command not found printf って、bashとかで独自に追加した組込みコマンドだから、標準のshだと使えないことがあると思います。 中にはshの実体がbash等になっていて、printfが使えることもありますが。 互換性を考えたら使わない方がいいでしょう。
お礼
printf自体は使えない場合があるのですか。 互換性がないものは確かに微妙ですね。
- Tacosan
- ベストアンサー率23% (3656/15482)
ん~, i=`printf '%x' $i` でいいような気もする.
補足
--------------------------- #!/bin/sh i=13 i=`printf '%x' $i` echo $i で、実行すると、 --- : command not found : invalid number 4: printf: 13 --- --------------------------- #!/bin/sh i=13 i=$(printf "%x" $i) echo $i で、実行すると、 ----- : command not found : command not found : invalid number 5: printf: 13 0 ----- --------------------------- なんかやっちゃってますかね^^;
- kmee
- ベストアンサー率55% (1857/3366)
表示しただけでは、変数に入らないのは当り前の話ですね 表示内容を変数に代入しなければなりません 例えば、 i=`echo $i | awk '{printf("%x", $1)}'`
awkを使って下記のようにしてみてはいかがでしょう。 「数字」の部分に10進数値を入れてください。 echo 数字 | awk '{printf("%x\n", $1)}'
お礼
ありがとうございます。 変換は出来たのですが、 i=13 echo $i | awk '{printf("%x\n", $1)}' echo $i としたら、 d 13 と表示されました^^; この$iを、dに書き換える方法はありますでしょうか?
補足
--------------------------- #!/bin/sh i=13 i=`printf '%x' $i` echo $i で、実行すると、 --- : command not found : invalid number 4: printf: 13 --- --------------------------- #!/bin/sh i=13 i=$(printf "%x" $i) echo $i で、実行すると、 ----- : command not found : command not found : invalid number 5: printf: 13 0 ----- --------------------------- なんかやっちゃってますかね^^;