簡體   English   中英

可以期望產生一個bash函數?

[英]Can expect spawn a bash function?

這是一個非常簡單的例子:

# expect -c "spawn socat -v -,raw,echo=0,nonblock /dev/ttyS0; interact"

expect執行一個內聯腳本,它生成socat以連接到serial設備。 但是如果我們有一個名為serial的bash函數(這非常方便)呢:

# serial(){ socat -v -,raw,echo=0,nonblock /dev/ttyS0;}
# expect -c "spawn serial; interact"
spawn serial
couldn't execute "serial": no such file or directory
    while executing
"spawn serial"

是否有可能強制expect執行一個函數,沒有包裝腳本或二進制文件?

您可以export shell函數,以便新的spawn ed shell可以調用它。 例如:

% cat foo.sh
the_func()
{
    echo hello world
}
export -f the_func

expect -c "spawn bash -c the_func; interact"
% bash foo.sh
spawn bash -c the_func
hello world
%

要在spawn運行bash函數或內置函數,必須使spawn成為運行函數或內置函數的bash子進程。 這是通過bash的-c選項完成的,它允許您為bash運行提供一些內聯腳本。

spawn bash -c "serial"

請記住, -c之后的單個參數是要運行的內聯腳本。 之后的參數被賦予bash的位置參數。

暫無
暫無

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

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