Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何使用expect(TCL)脚本将十进制转换为十六进制并发送十六进制_Linux_Shell_Unix_Tcl_Expect - Fatal编程技术网

Linux 如何使用expect(TCL)脚本将十进制转换为十六进制并发送十六进制

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

我正在编写一个小的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 < 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年了:-)