Linux期望spawn找不到文件

时间:2015-09-15 11:50:05

标签: linux bash

我写了一个名为load_data.exp的期望脚本

#!/usr/bin/expect

spawn "osm2pgsql -s -l -d postgres -W -U postgres -H localhost -P 5432 --hstore /absolute/path/to/bruges_belgium.osm"
expect "Password:" {send "mysecretpassword"}

通过

更改访问权限
chmod +x load_data.exp

通过

运行它
./load_data.exp

文件肯定退出,它给了我错误

spawn osm2pgsql -s -l -d postgres -W -U postgres -H localhost -P 5432 --hstore /absolute/path/to/bruges_belgium.osm
couldn't execute "osm2pgsql -s -l -d postgres -W -U postgres -H localhost -P 5432 --hstore /absolute/path/to/bruges_belgium.osm": no such file or directory
while executing
"spawn "osm2pgsql -s -l -d postgres -W -U postgres -H localhost -P 5432 --hstore /absolute/path/to/bruges_belgium.osm""
(file "./load_data.exp" line 6)

安装osm2pgsql并可以在终端中直接运行以下句子

osm2pgsql -s -l -d postgres -W -U postgres -H localhost -P 5432 --hstore /absolute/path/to/bruges_belgium.osm

所以spawn有问题,我想

2 个答案:

答案 0 :(得分:1)

尝试指定osm2pgsql的绝对路径(通过命令获取' which osm2pgsql')

答案 1 :(得分:1)

正如错误所示,它试图找到一个名为osm2pgsql的程序,但是一个名为osm2pgsql -s -l -d postgres -W -U postgres -H localhost -P 5432 --hstore /absolute/path/to/bruges_belgium.osm的程序,包括所有空格和短划线作为可执行文件名的一部分。从spawn命令中删除引号:

spawn osm2pgsql -s -l -d postgres -W -U postgres -H localhost -P 5432 --hstore /absolute/path/to/bruges_belgium.osm