SSH在terminal中工作,但在shell脚本中也不起作用

我正在尝试执行我上传到AWS实例的脚本。 如果我在我的MacBookterminal中运行以下命令,它会成功:

ssh -o StrictHostKeyChecking=no -i ~/.ec2/my.pem ec2-user@ec2-<address>.amazonaws.com "chmod u+x ./myScript.sh" 

我将相同的命令移植到本地机器上的一个简单的shell脚本中,在那里传递信息:

 #!/bin/sh # myLocalScript.sh host=$1 pem=$2 fileName=$3 ssh -o StrictHostKeyChecking=no -i $pemkey ec2-user@$host "chmod u+x ./$fileName" 

当我使用这个命令运行它时:

 sh myLocalScript.sh ec2-user@ec2-<address>.amazonaws.com ~/.ec2/my.pem myScript.sh 

我得到以下错误:

 Warning: Identity file ec2-user@ec2-<address>.amazonaws.com not accessible: No such file or directory. ssh: Could not resolve hostname chmod u+x ./myScript.sh: nodename nor servname provided, or not known 

我究竟做错了什么?

你需要$pem而不是$pemkey

此外,你应该养成双引号变量的习惯,除非你非常需要一个空变量来“消失”。