45

我想访问期望脚本中的 PATH 环境变量。

我怎样才能做到这一点?

我的实际脚本是:

#!/usr/bin/expect
set timeout 300
send "echo $PATH\r"

它的输出是:

can't read "PATH": no such variable
    while executing
"send "echo $PATH\r""
4

4 回答 4

60

Expect 是Tcl的扩展。Tcl 通过全局env数组访问环境变量:

send_user "$env(PATH)\n"
于 2012-10-02T22:06:45.183 回答
12

您可以通过以下方式使用全局 env 数组:

$::env(PATH)    

这个概念也适用于程序内部。

于 2014-01-22T14:02:41.300 回答
2

如果要读取目标 $PATH 变量,则必须转义 "$" :

exp_sent -- echo "\$PATH\r"

于 2013-08-26T10:04:44.787 回答
0

两者都$::env(PATH)工作$env(PATH)得很好。前者在其他脚本中也可以(例如expect -c "...",后者更像是“编程风格”。

于 2022-01-01T11:22:39.940 回答