gpt4 book ai didi

linux - Expect 脚本中的 Spawn 无法访问环境变量

转载 作者:太空宇宙 更新时间:2023-11-04 03:32:58 29 4
gpt4 key购买 nike

我在主目录中有一个名为 load_data.exp 的期望脚本

#!/usr/bin/expect
spawn osm2pgsql -s -l -d postgres -W -U postgres -H $OSM_DATABASE_PORT_5432_TCP_ADDR -P 5432 --hstore $filename
expect "Password"
send "$OSM_DATABASE_ENV_POSTGRES_PASSWORD\n"
interact

有一个环境变量 OSM_DATABASE_PORT_5432_TCP_ADDR 经验证其值为 172.17.0.13

echo $OSM_DATABASE_PORT_5432_TCP_ADDR

输出

172.17.0.13

通过./load_data.exp运行load_data.exp,出现错误

can't read "OSM_DATABASE_PORT_5432_TCP_ADDR": no such variable
while executing
"spawn osm2pgsql -s -l -d postgres -W -U postgres -H $OSM_DATABASE_PORT_5432_TCP_ADDR -P 5432 --hstore $filename"
(file "../load_data.exp" line 4)

似乎spawn无法访问环境变量DATABASE_PORT_5432_TCP_ADDR

最佳答案

您可以通过以下方式将 Bash 变量传递给 Expect:

#!/usr/bin/expect
set HOST [lindex $argv 0]
set FILENAME [lindex $argv 1]
set PASSWORD [lindex $argv 2]
spawn osm2pgsql -s -l -d postgres -W -U postgres -H $HOST -P 5432 --hstore $FILENAME
expect "Password"
send "$PASSWORD\n"
interact

然后像这样调用您的期望脚本:

load_data.exp $OSM_DATABASE_PORT_5432_TCP_ADDR $filename $OSM_DATABASE_ENV_POSTGRES_PASSWORD

关于linux - Expect 脚本中的 Spawn 无法访问环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32591768/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com