脚本通过ssh =>调用脚本bash:...:没有这样的文件或目录

时间:2011-03-05 00:54:41

标签: bash ssh

我运行一个脚本,通过ssh连接调用另一个脚本。

我的脚本执行以下命令:

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 个答案:

答案 0 :(得分:3)

通常你不需要首先调用bash。即使远程计算机使用的shell默认情况下不是bash,也应该设置create.bash脚本,使其顶部如下:

  #!/bin/bash

它已经调用了bash。

需要考虑的其他事项:

  1. 如果路径有问题,请填写bash的完整路径。

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

答案 1 :(得分:1)

您确定脚本中的引用与您引用的相同吗?我希望错误来自:

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

或类似。

(请注意,当您收到表单

的错误时
bash: mumble: No such file or directory
mumble 被视为整个字符串,因此在这种情况下,它正在寻找一个字面上称为/data/.../create.bash 1 2 8的文件,其中空格和数字被视为脚本名称的一部分而不是作为参数。)

答案 2 :(得分:1)

删除引号:

ssh $cluster bash $create 2 2 $parts

或仅将它们放在参数周围:

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

如果您的变量值包含空格:

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