我想要創建一個BASH腳本,它可以通過單詞讀取二進制文件,單詞(32位),並將該單詞傳遞給一個名爲devmem的應用程序。打印出二進制文件內容的Bash腳本,一次只能顯示一個單詞,沒有xxd
現在,我有:
...
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。 (dd - > binary word - > devmem)而不是(hexdump - > file,parse file - >)這個腳本是性能驅動的,如果我在我的方法中錯了,請糾正我的錯誤,但是因爲這個原因,我選擇了dd-> binary word-> devmem) devmem)。不管最終目標的最佳路線如何,這個練習都給了我一些麻煩,我非常感謝有人幫我弄清楚如何做到這一點。
謝謝!
如果輸入文件是二進制文件,我希望'$ val'有一個「怪異」的外觀,如果你做了'echo $ val',因爲'$ val'會直接從文件中獲得二進制信息, 'echo'會顯示它,就好像它們是ASCII碼一樣(無論它們是否可打印)。所以我不確定爲什麼用'xxd -r -p'(它做一個反向十六進制轉儲 - 採用ASCII十六進制並給二進制 - 與我以爲你會想要的相反)爲您提供了所需的結果。 – lurker