我运行一个脚本,通过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在脚本中执行此操作。我尝试了不同的命令,总是收到这个例外。
感谢您的帮助!
答案 0 :(得分:3)
通常你不需要首先调用bash。即使远程计算机使用的shell默认情况下不是bash,也应该设置create.bash脚本,使其顶部如下:
#!/bin/bash
它已经调用了bash。
需要考虑的其他事项:
如果路径有问题,请填写bash的完整路径。
确保远程主机上存在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'"