2011-03-05 19 views
3

我运行一个通过ssh连接调用另一个脚本的脚本。脚本通过ssh调用脚本=> bash:...:没有这样的文件或目录

我的脚本执行以下命令:

ssh $cluster "bash $create 2 2 $parts" 

其中$cluster是ssh的字符串,$create是在目标机器上的bash脚本的绝对路径。我在前几行运行了ssh $cluster "mkdir $serialized/$number",这工作得很好。

但是这个命令返回我:

bash: /data/.../create.bash 1 2 8: No such file or directory 

的文件是在机器上,我可以在那里执行命令,但我无法弄清楚如何从脚本内通过ssh做到这一点。我尝试了不同的命令,总是收到这个异常。

感谢您的帮助!

回答

3

一般来说,你不应该首先调用bash。即使在远程机器使用的shell不是bash的默认情况下,你应该建立create.bash脚本,使得它的顶部看起来像:

 
    #!/bin/bash 

,它会调用已经庆典。

其他的事情要考虑:

  1. 放的完整路径,以防打坏的路径是有问题的。

  2. 确保bash 在远程主机上存在,否则请尝试'sh'。

1

确定脚本中的引用与引用的引用相同吗?我期望从以下错误:

ssh $cluster "bash '$create 2 2 $parts'" 

或类似。

(请注意,当你得到以下形式的错误

bash: mumble: No such file or directory 

咕哝被视为整个字符串,所以在这种情况下,它正在寻找一个字面上叫/data/.../create.bash 1 2 8文件,用空格和正在采取的数字作为作为参数的脚本名称,而不是一部分)

1

删除引号:

ssh $cluster bash $create 2 2 $parts 

或者把他们只有围绕参数:

ssh $cluster bash "$create 2 2 $parts" 

,如果你的变量值包含空格:

ssh $cluster bash "'$create' 2 2 '$parts'" 
+0

哇,这实际工作。谢谢! – progfan 2017-12-13 18:47:30

相关问题