2013-10-30 39 views
0

我想輸出tcl緩衝區到bash變量,我無法讓它工作。我想輸出tcl緩衝區到bash變量

我希望我的例子能夠清楚我想要完成什麼。

我絕對想的TCL腳本編程

====================================== 
#!/bin/bash 
var=bash_to_tcl 

expect -c " 

puts lindex $argv 0 

expect "xx" 
send "123\n" 

set $var $expect_out(buffer) <<<< setting the variable to export to bash>>>>>> 

} 
exit 0 

< < < >> ========================= ============

echo $var "tcl_to_bash" (THIS IS WHERE I AM HAVING ISSUES) <<<<<<<<<<<<<<<<<<< 
===================================== 

我一直在尋找一些線索的例子,但找不到任何。 我得到了ecpect工作,但不能導出輸出回bash

回答

3

子進程(expect)不能改變父(bash)的環境。通常信息通過stdio通道在進程之間傳遞:

#!/bin/bash 

# this is how bash captures the output of the expect program 
var=$(expect -c ' 
    spawn ... 
    expect "xx" 
    send "123\n" 
    # here is expect sending the info back to the parent 
    puts $expect_out(buffer) 
') 
do something with "$var" 
+1

另一種方法是將其寫入(已知)文件。這是一個更復雜和混亂(如果腳本同時運行兩次,會發生什麼?),但使得傳輸許多值變得更容易。這是一個權衡。 –

+0

感謝 我會玩這兩個選項,看看如何最好地實現我的最終腳本。 – Seanhol1