【发布时间】:2015-07-29 06:19:37
【问题描述】:
我正在尝试编写一个 shell 函数来将文件 scp 到我的 AWS 主机
function ec2-scp() {
scp -i /path/to/pem/file.pem $1 user@ec2.host.amazonaws.com:.
}
我把它当作
ec2-scp server.war
我得到一个错误:
scp: .: not a regular file
但是当我用文件名替换 $1 并执行相同的操作时,它可以工作。 这是我正在尝试 SCP 的战争文件。我该如何解决这个问题?
【问题讨论】:
-
如果您运行
set -x; ec2-scp server.war; set +x并使用带有参数的函数,您看到正在运行什么命令?只是删除.有帮助吗? -
谢谢,我不知道 set -+x。我看到这个正在执行:scp -i /path/to/pem/file.pem user@ec2.host.amazonaws.com:。 server.war ,现在如何将 server.war 放在正确的位置?
-
鉴于编写的功能,该输出实际上是不可能的。
type ec2-scp说函数的主体是什么?函数的主体可能是scp -i /path/to/pem/file.pem user@ec2.host.amazonaws.com:. $1偶然吗? -
看起来正确,输出:ec2-scp 是一个函数 ec2-scp () { scp -i /path/to/pem/file.pem $1 host@ip:. }
-
以这种方式编写的函数没有任何方法可以让
ec2-scp的参数位于传递给scp的参数的末尾。你确定这是你在set -x报告文件在末尾的同一个shell 会话中得到的函数体吗?您可能有一个旧的ec2-scp别名吗? (如果是这样的话,我本来希望type ec2-scp报告它而不是函数体。)
标签: shell amazon-web-services scp