期望在bash上下文中设置变量

时间:2015-11-24 15:22:21

标签: bash shell tcl expect

您是否知道是否可以在期望脚本中分配和打印expect变量封装在bash脚本中。好的,我不清楚,让我们看看下面的例子:

#!/bin/bash

..some bash code..

/usr/bin/expect << EOF
  set hello "abcd"
  puts "$hello"
  exit
EOF

通常,它应该打印出来&#34; abcd&#34;因为这是变量&#34;你好&#34;的内容,但它没有打印任何东西......只是空白&#34; \ n&#34;空间

lionel@pc:~$ ./call_to_bash_script.sh

lionel@pc:~$

期待工作正常,好像我试着做:put&#34; abcd&#34;它把它打印出来。

lionel@pc:~$ ./call_to_bash_script.sh
abcd  
lionel@pc:~$

1 个答案:

答案 0 :(得分:3)

Heredocs扩展bash变量引用。在预期有机会看到它之前,Bash正在扩展$hello。您可以通过引用EOF分隔符来禁用变量扩展,如下所示:

/usr/bin/expect << 'EOF'
  set hello "abcd"
  puts "$hello"
  exit
EOF

或者通过转义变量引用:

/usr/bin/expect << EOF
  set hello "abcd"
  puts "\$hello"
  exit
EOF