您是否知道是否可以在期望脚本中分配和打印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:~$
答案 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