Linux 如何使用expect(TCL)脚本将十进制转换为十六进制并发送十六进制
我正在编写一个小的expect(TCL)脚本,以发送一系列十六进制格式的数字,并期望得到一些东西。我在一个循环上迭代,一个接一个地发送字节。但我无法以十六进制形式发送数字 下面是一个示例代码。我需要用0x形式的数字通过循环发送第一行。第二行是我试过的Linux 如何使用expect(TCL)脚本将十进制转换为十六进制并发送十六进制,linux,shell,unix,tcl,expect,Linux,Shell,Unix,Tcl,Expect,我正在编写一个小的expect(TCL)脚本,以发送一系列十六进制格式的数字,并期望得到一些东西。我在一个循环上迭代,一个接一个地发送字节。但我无法以十六进制形式发送数字 下面是一个示例代码。我需要用0x形式的数字通过循环发送第一行。第二行是我试过的 send "show hardware internal qengine inst 0 memory ib_rr0_span_dc3hdr start 0x0 num 0x2 \r" expect "#" for {set i 0} {$i &l
send "show hardware internal qengine inst 0 memory ib_rr0_span_dc3hdr start 0x0 num 0x2 \r"
expect "#"
for {set i 0} {$i < 16} {incr i 1} {
puts stdout "i val: $i '\x$i'"
}
send“显示硬件内部qengine inst 0内存ib_rr0_span_dc3hdr start 0x0 num 0x2\r”
期望“#”
对于{set i0}{$i<16}{incr i1}{
将stdout“i val:$i'\x$i”
}
我做TCL已经很久了,但我相信下面的内容可以满足您的需求
puts stdout [format "i val %d '\x%x'" $i $i]
%d和%x占位符几乎与C printf/sprintf语句中的占位符相同,并允许前导零、字段大小等内容。
\x
看起来有点奇怪(也许\\x
会更好),但其他方面看起来都很好。谢谢-我上一个Expect/TCL脚本现在大约有10年了:-)