2012-08-23 29 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

您的答案显示在低质量帖子评论列表中。我建议用一些解释来丰富它。 –