簡體   English   中英

使用bash腳本捕獲期望會話的輸出

[英]Capturing output of an expect session with a bash script

我有一個bash腳本,該腳本使用xmlstarlet來操縱應用程序配置文件中的一些鍵/值對,以准備將文件移動到新的生產主機。 需要更改的值是特定於主機/加密的。

為了發現新值之一,我需要在期望會話中與供應商提供的腳本進行交互,並將輸出捕獲到bash腳本中的變量中,以便我可以繼續使用它。

bash腳本的期望部分看起來像這樣:

expect <<DONE
    spawn command_provided_by_vendor
    expect :
    send -- "newvalue\r"
DONE

這就是我卡住的地方

在shell中,該命令的輸出如下所示:

Encrypted value (case sensitive, please cut and paste): 2qIrRvcSoHMb55dpcef6vw==

我需要做的是捕獲“:”之后的非空白輸出,由於正則表達式錯誤,提示字符串中的括號等原因,我嘗試過的任何方法都無法工作。

關於stackoverflow還有其他類似的問題,但是我無法理解這些答案如何幫助解決了我的問題。

任何幫助,指針表示贊賞。

我將使用Expect命令尋找合適的正則表達式並在其中捕獲值:

value=$(
    expect <<DONE
        spawn command_provided_by_vendor
        expect :
        send -- "newvalue\r"
        expect -re {Encrypted value.*: (\S+)}
        puts $expect_out(1,string)
        expect eof
DONE
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM