期望在 bash 上下文中设置变量
expect set variable in bash context
您知道是否可以在封装在 bash 脚本中的 expect 脚本中分配和打印 expect 变量。好的,我知道这不是很清楚,让我们看下面的例子:
#!/bin/bash
..some bash code..
/usr/bin/expect << EOF
set hello "abcd"
puts "$hello"
exit
EOF
正常情况下,它应该打印出 "abcd",因为这是变量 "hello" 的内容,但它什么也没打印出来.. 只是空白 "\n" space
lionel@pc:~$ ./call_to_bash_script.sh
lionel@pc:~$
Expect 运行良好,就像我尝试做的那样:puts "abcd" 它打印出来。
lionel@pc:~$ ./call_to_bash_script.sh
abcd
lionel@pc:~$
Heredocs 展开 bash 变量引用。 Bash 在 expect 有机会看到它之前正在扩展 $hello
。您可以通过引用 EOF
分隔符来禁用变量扩展,如下所示:
/usr/bin/expect << 'EOF'
set hello "abcd"
puts "$hello"
exit
EOF
或者通过转义变量引用:
/usr/bin/expect << EOF
set hello "abcd"
puts "$hello"
exit
EOF
您知道是否可以在封装在 bash 脚本中的 expect 脚本中分配和打印 expect 变量。好的,我知道这不是很清楚,让我们看下面的例子:
#!/bin/bash
..some bash code..
/usr/bin/expect << EOF
set hello "abcd"
puts "$hello"
exit
EOF
正常情况下,它应该打印出 "abcd",因为这是变量 "hello" 的内容,但它什么也没打印出来.. 只是空白 "\n" space
lionel@pc:~$ ./call_to_bash_script.sh
lionel@pc:~$
Expect 运行良好,就像我尝试做的那样:puts "abcd" 它打印出来。
lionel@pc:~$ ./call_to_bash_script.sh
abcd
lionel@pc:~$
Heredocs 展开 bash 变量引用。 Bash 在 expect 有机会看到它之前正在扩展 $hello
。您可以通过引用 EOF
分隔符来禁用变量扩展,如下所示:
/usr/bin/expect << 'EOF'
set hello "abcd"
puts "$hello"
exit
EOF
或者通过转义变量引用:
/usr/bin/expect << EOF
set hello "abcd"
puts "$hello"
exit
EOF