![Expect 스크립트의 send 명령에서 변수 값을 보내는 방법](https://linux55.com/image/190850/Expect%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98%20send%20%EB%AA%85%EB%A0%B9%EC%97%90%EC%84%9C%20%EB%B3%80%EC%88%98%20%EA%B0%92%EC%9D%84%20%EB%B3%B4%EB%82%B4%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
아래는 내 스크립트입니다
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]