バイナリ ファイルを単語 (32 ビット) ごとに読み取り、その単語を devmem というアプリケーションに渡す BASH スクリプトを作成したいと考えています。
今、私は持っています:
...
for (( i=0; i<${num_words}; i++ ))
do
val=$(dd if=${file_name} skip=${i} count=1 bs=4 2>/dev/null)
echo -e "${val}" # Weird output...
devmem ${some_address} 32 ${val}
done
...
${val} には、クエスチョン マークの付いたひし形のように見える奇妙な (ASCII?) 形式の文字表現があります。
「val =」行を次のように置き換えると:
val=$(dd ... | xxd -r -p)
目的の出力が得られます。
BASH を使用して xxd の機能を複製する最も簡単な方法は何ですか?
注: 私は組み込み Linux プロジェクトに取り組んでおり、要件により xxd をインストールすることはできません。
このスクリプトはパフォーマンス主導型です。私のアプローチが間違っている場合は修正してください。ただし、この理由から、(hexdump -> file、parse file -> devmem) の代わりに (dd -> binary word -> devmem) を選択しました。- 私の最終目標への最適なルートに関係なく、このエクササイズは私にいくつかのトラブルをもたらしました.
ありがとう!