如何在Expect脚本中访问环境变量?

54
我希望能在expect脚本中访问PATH环境变量。
请问如何实现?
我的当前脚本如下:
#!/usr/bin/expect
set timeout 300
send "echo $PATH\r"

并且它的输出是:
can't read "PATH": no such variable
    while executing
"send "echo $PATH\r""

1
非常微妙的问题。我为此挣扎了很多小时。 感谢您提出了正确的问题。 - magnus167
4个回答

70

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

send_user "$env(PATH)\n"

18

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

$::env(PATH)    

这个概念在程序内同样适用。


这个应该被批准为正确答案,它有效。 - Igor Leonovich

2

如果您想读取目标$PATH变量,则必须转义"$"符号:

exp_sent -- echo "\$PATH\r"


1

无论是$::env(PATH)还是$env(PATH)都可以很好地工作。前者也可以在其他脚本(如expect -c "...")中使用,而后者更符合“编程风格”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接