這是我的腳本版本,它首先嘗試明智地獲取 docker stats 容器,然后移動到期望部分以啟動測驗工具以通過按x 鍵來獲取統計資訊。腳本如下:
#!/bin/bash
#!/usr/bin/expect -f
docker stats --no-stream --format "{\"container\": \"{{ .Name }}\", \"memory\": { \"raw\": \"{{ .MemUsage }}\", \"percent\": \"{{ .MemPerc }}\"}, \"cpu\": \"{{ .CPUPerc }}\"}"
#docker cp new.sh main:/app/aicore/state_tools/
docker exec main bash -c "cd aicore/state_tools; pwd;
/usr/bin/expect << 'EOF'
set timeout -1
for { set i 0 } { $i < 300000 } { incr i } {
spawn /app/aicore/state_tools/ss_tester
expect "Exit"
send -- "x\r"
expect "press"
send -- "\s03"
sleep 300
}
EOF"
我得到的錯誤如下:在“for { set i 0 } { < 300000 } {incr i} { spawn / app / aicore/state_tools/ss_tester 期望退出發送 -- xr 期望按下發送 -- s03 睡眠 300 }"
有人可以指導我在代碼中做錯了什么嗎?
uj5u.com熱心網友回復:
看起來像一個參考問題。您已經為 here-document 參考了 EOF,這應該防止其內容被替換,但是在它被傳遞給 docker 之后適用。但在它到達那個階段之前,它會被運行腳本的 shell 處理,并且會在 $i 傳遞給 docker 之前嘗試替換它。我會嘗試在前面加上一個反斜杠$i來防止這種情況,即\$i.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/439466.html
