2012-08-23 30 views
1
for num in {3758145536..3758149632..4} 
do 
    echo "obase=16; $num" | hexnum 
    peek -lt $hexnum > "/luascript/dumpfileA" 
done 

我想要做的是增量,從address0xe000000迭代,以0xe0001000 使用偷看偷看這些部分存儲和寫入結果文件。shell腳本循環,由六角

所以我用Deceimal做增量工作。然後轉換爲十六進制。

也許,我可以直接用Hex進行遞增嗎?

但這不起作用。需要幫助 謝謝!

回答

4

(我假設你使用的是bash)。

通常情況下,bash只允許您輸入10位數字字面值。您可以在算術上下文中使用其他基數(例如((...))),但它將以其基數爲10的表示形式顯示。但是,您可以使用內置的printf快速轉換爲十六進制表示。

for ((num=0xe0000000; num <= 0xe0001000; num+=4)); do 
    peek -lt $(printf "%x" $num) >> /luascript/dumpfileA 
done 
0

如果您使用zsh,你可以做這樣的事情(注意c_bases需要設置以獲得0x$num前):

setopt c_bases 
typeset -i 16 num 
for num in $(seq $((0xe000c000)) 4 $((0xe000d000))); do 
    echo "peek -lt $num > /luascript/dumpfileA" 
done | head 

輸出:

peek -lt 0xE000C000 > /luascript/dumpfileA 
peek -lt 0xE000C004 > /luascript/dumpfileA 
peek -lt 0xE000C008 > /luascript/dumpfileA 
peek -lt 0xE000C00C > /luascript/dumpfileA 
peek -lt 0xE000C010 > /luascript/dumpfileA 
peek -lt 0xE000C014 > /luascript/dumpfileA 
peek -lt 0xE000C018 > /luascript/dumpfileA 
peek -lt 0xE000C01C > /luascript/dumpfileA 
peek -lt 0xE000C020 > /luascript/dumpfileA 
peek -lt 0xE000C024 > /luascript/dumpfileA 

刪除head,echo並在您對輸出滿意時引用。

+0

'peek'會以「16#E000D170」的形式理解一個參數嗎? (儘管我將這個添加到我學習zsh的理由列表中)。 – chepner

+0

@chepner:我應該更加明確,如果設置了'c_bases'選項,基數輸出爲'0x',我會更新答案。 – Thor

0

太簡單了!使用這個:

bc <<< "obase = 16 ; $(seq 0 65536)" 
+1

考慮爲您的代碼提供解釋 – arghtype

+0

您的答案顯示在低質量帖子評論列表中。我建議用一些解釋來豐富它。 –