在 Makefile 中包含一些 SFTP 命令
Including some SFTP commands in a Makefile
我使用 Makefile 来创建我正在处理的论文的 pdf 文件。我还想使用 make 将最新版本上传到我的网站,这需要 sftp。我虽然我可以做这样的事情(命令行上的单词)但似乎在 make 中,EOF 被忽略了,即 this
website:
sftp -oPort=2222 me@mywebsite.com << EOF
cd papers
put research_paper.pdf
EOF
生成一条错误消息
cd papers
/bin/sh: line 0: cd: papers: No such file or directory
我认为是说 "papers" 在您的本地计算机上不存在,即 'cd' 正在本地执行,而不是远程执行。
几个想法:
- 使用每个 Linux 发行版和 brew 都应该有的 ncftp:它会记住 'state' 所以
cd
变得不必要
- 尽可能使用
scp
而不是 sftp
- 编写一个简单的 shell 脚本来处理 EOF 业务并调用它
对于它的价值,这是我将 tarball 推送到 CRAN winbuilder 的脚本——并将目标目录和脚本作为 ncftpput
.
的参数
#!/bin/bash
function errorexit () {
echo "Error: "
exit 1
}
if [ "$#" -lt 1 ]; then
errorexit "Need to specify argument file"
fi
if [ ! -f ]; then
errorexit "File not found, aborting."
fi
ncftpput win-builder.r-project.org /R-release
ncftpput win-builder.r-project.org /R-devel
然后我就做 wbput.sh foo_1.2-3.tar.gz
然后就可以了...
您不能(通常)在 Make 配方中将单个命令放在多行中,因此这里的文档是不行的。试试这个:
website: research_paper.pdf
printf 'cd papers\nput $<\n' \
| sftp -oPort=2222 me@mywebsite.com
目标显然依赖于 PDF,所以我也将其设为显式依赖。
我使用 Makefile 来创建我正在处理的论文的 pdf 文件。我还想使用 make 将最新版本上传到我的网站,这需要 sftp。我虽然我可以做这样的事情(命令行上的单词)但似乎在 make 中,EOF 被忽略了,即 this
website:
sftp -oPort=2222 me@mywebsite.com << EOF
cd papers
put research_paper.pdf
EOF
生成一条错误消息
cd papers
/bin/sh: line 0: cd: papers: No such file or directory
我认为是说 "papers" 在您的本地计算机上不存在,即 'cd' 正在本地执行,而不是远程执行。
几个想法:
- 使用每个 Linux 发行版和 brew 都应该有的 ncftp:它会记住 'state' 所以
cd
变得不必要 - 尽可能使用
scp
而不是sftp
- 编写一个简单的 shell 脚本来处理 EOF 业务并调用它
对于它的价值,这是我将 tarball 推送到 CRAN winbuilder 的脚本——并将目标目录和脚本作为 ncftpput
.
#!/bin/bash
function errorexit () {
echo "Error: "
exit 1
}
if [ "$#" -lt 1 ]; then
errorexit "Need to specify argument file"
fi
if [ ! -f ]; then
errorexit "File not found, aborting."
fi
ncftpput win-builder.r-project.org /R-release
ncftpput win-builder.r-project.org /R-devel
然后我就做 wbput.sh foo_1.2-3.tar.gz
然后就可以了...
您不能(通常)在 Make 配方中将单个命令放在多行中,因此这里的文档是不行的。试试这个:
website: research_paper.pdf
printf 'cd papers\nput $<\n' \
| sftp -oPort=2222 me@mywebsite.com
目标显然依赖于 PDF,所以我也将其设为显式依赖。