以下は私のスクリプトです
proc sendline {line} { send -- "$line\r" }
set slot 1
set port 1
for {set x 0} {$x<48} {incr x} {
sendline {curl -X POST -d '{"command":"dumpcommand","slot": "$slot","port": "$port"}' http://127.0.0.1:7777/api/test}
expect -exact "OK"
sleep 2
incr slot
incr port
}
スロットとポートを1,2に交換したい....例:
curl -X POST -d '{"command":"dumpcommand","slot": "1","port": "1"}' http://127.0.0.1:7777/api/test
答え1
Tclの中かっこはシェルの一重引用符と同じです。変数の置換を防ぎます。http://www.tcl-lang.org/man/tcl8.6/TclCmd/Tcl.htm
あなたはする必要があります
sendline "curl -X POST -d '{\"command\":\"dumpcommand\",\"slot\": \"$slot\",\"port\": \"$port\"}' http://127.0.0.1:7777/api/test"
すべての引用符のエスケープに問題がある場合は、format
Tclのprintfを使用してください。
sendline [format {curl -X POST -d '{"command":"dumpcommand","slot": "%s","port": "%s"}' http://127.0.0.1:7777/api/test} $slot $port]