2022年7月17日の日記の2番目の記事へのコメント
■シェルスクリプト
下記のようなシェルスクリプト、明示的にbashで動かすと期待通り普通に 0x41 0x42 がtest.binファイルに書き出されるのに、/bin/sh で動かすようにすると "\x41\x42"という文字列がそのままファイルに書き出されてしまう問題に遭遇。
#!/bin/sh HEX='\x41\x42' printf $HEX > test.bin
かなり悩んだんですが、原因はUbuntuの/bin/shの実体が、bashじゃなくてdashだからのようです。dashはprintfコマンドを内部で処理できるようですが、これが \xhh 形式の表現に非対応ということっぽい。ていうか、dashって何なんすかね。初めて知りましたよ・・・。なんかもう、Linux前提のスクリプトだし、printfは /usr/bin/printf みたいにフルパスで指定するか、あるいは1行目を #!/bin/bash とした方が安心かもなぁ・・・。
2022年7月17日の日記の2番目の記事へのコメント
[コメントを書く]