linux - 在当前目录运行 expect 脚本

标签 linux shell expect

我写了一个 sftp expect 脚本来上传和下载文件。

我把脚本文件放在一个文件夹里。并双击脚本运行脚本以登录远程服务器,但每次我的脚本都会在主文件夹中而不是脚本所在的文件夹中登录服务器。

#!/usr/bin/env expect
set login "username"
set addr "server.com"
set pw "mypassword"
set timeout -1
sleep 1
spawn sftp $login@$addr
expect "Password:" {send "$pw\r"}
sleep 1
interact

例如,我把这个脚本放在/Desktop 上,如果我想从我本地机器的/Desktop 上传一些文件到我的服务器,我仍然必须 cd 到/Desktop 然后运行这个脚本,如果我只是加倍单击以执行脚本,它将从 ~ 或/root 登录到我的服务器,无论默认目录是什么。我想从脚本所在的目录登录我的服务器。

有什么方法可以找到文件的位置?或者我需要执行搜索来找到文件?

最佳答案

你可能想要

cd [file dirname $argv0]

切换到脚本所在的目录。

关于linux - 在当前目录运行 expect 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22185922/

相关文章:

c++ - 无法写入 Linux 中的管道

python - 从非常大的文件中删除稀有词

sql-server - 为 MSSQL 启动 Docker Image 而不是创建容器

linux - cURL:如果状态为200,如何返回0?

shell - spawn后如何在expect shell脚本中获取子进程pid

linux - 在 bash 中抑制 telnet 的输出

bash - 如何在 Expect 条件语句中使用 Bash 脚本变量

php - 执行 PHP 操作后网站关闭

bash:在脚本末尾 pushd 后不需要调用 popd 吗?

objective-c - 如何从 Cocoa 调用的管理员权限 bash 脚本获取输出?