下面是我远程执行的shell函数:
softrun() {
source /usr/local/bin/myscript.sh
#/bin/bash /usr/local/bin/myscript.sh
}
远程执行存储在"script1.sh"中的上述函数的命令是:
ssh user@host script1.sh softrun
但它给出了一个错误:没有这样的文件或目录我已尝试过"source"&bash方法。当我手动检查shell脚本是否存在于该位置并且不是符号链接时
这不是在bash中调用函数的方式。不能只将函数名传递到脚本中。您需要在script1.sh文件中使用这个:
#!/usr/bin/env bash
softrun() {
source /usr/local/bin/myscript.sh
}
$1
请注意文件末尾的$1
。这是您通过ssh传递的脚本的第一个参数,ssh恰好是您的函数名。你得到";没有这样的文件或目录";错误是因为在您的示例中,ssh认为softrun
是在运行script1.sh之后应该运行的另一个文件
更新。忘记了。我认为您还需要将脚本名称+其参数包装成引号,因此ssh认为这是一个单独的参数,而不是两个要执行的文件。