【问题标题】:bash command doesnt seem to work, but its echo does?bash 命令似乎不起作用,但它的 echo 可以吗?
【发布时间】:2011-11-04 05:15:20
【问题描述】:

好吧,我是 linux 新手,所以这可能是一个非常新手的事情,就这样吧:

我有一个脚本,我在其中尝试将一些不同的作业发送到远程计算机(实际上是 Amazon 的 EC2 实例),这些作业实际上是我使用不同参数运行的相同功能。

最终在脚本代码中我有这一行:

nohup ssh -fqi key.pem ubuntu@${Instance_Id[idx]} $tmp

如果我这样做:

echo nohup ssh -fqi key.pem ubuntu@${Instance_Id[idx]} $tmp

我明白了:

nohup ssh -fqi key.pem ubuntu@ec2-72-44-41-228.compute-1.amazonaws.com '(nohup ./Script.sh 11 1&)'

现在是奇怪的事情。如果我在脚本中运行没有回声的代码,它就不起作用!它在 nohup.out 中说(在我的笔记本电脑中,没有 nohup.out 在远程实例中创建)bash: (nohup ./Script.sh 10 1&): No such file or directory

该文件确实存在于本地和远程,并且是 chmod +x。 如果我只是在有问题的行前面运行带有 echo 的相同脚本,然后复制其输出并粘贴到终端中,它就可以工作!。

欢迎提供线索,谢谢!

【问题讨论】:

  • 你最好在 serverfault.com 上问这个问题。
  • 谢谢大家,我删除了 ' 并且它确实有效!我以为 i 是 ssh 命令的一部分,再次感谢!

标签: bash ssh amazon-ec2 nohup


【解决方案1】:

尝试从 $tmp 中删除单引号。看起来 bash 将 (nohup ./Script.sh 10 1&) 视为不带参数的命令,但从技术上讲,nohup 是带参数的命令 ./Script.sh 10 1

【讨论】:

    【解决方案2】:

    问题在于您的 $tmp 变量中的 nohup 命令周围的单引号。这些不会在本地 shell 上使用,因此 SSH 会逐字传递它们。这意味着 ssh 服务器远程尝试将(nohup ./Script.sh 10 1&) 解释为显然没有的命令(查找名为该的文件)。确保删除 $tmp 中的单引号。

    【讨论】:

      猜你喜欢
      • 2015-12-09
      • 2012-02-08
      • 1970-01-01
      • 2019-05-09
      • 2011-10-18
      • 2015-01-29
      • 2021-09-12
      • 1970-01-01
      相关资源
      最近更新 更多