gpt4 book ai didi

linux - 是否可以在远程 shell 脚本中调用函数?

转载 作者:太空宇宙 更新时间:2023-11-04 11:20:19 25 4
gpt4 key购买 nike

我正在尝试远程调用在不同服务器上的 shell 脚本中定义的函数,并让该函数在远程服务器上运行。

希望下面的例子能说明这一点。

在 host2 上我有两个脚本。

工具.sh:

f ()
{
hostname
}

测试.sh:

. utils.sh
f

然后我可以在 host2 上执行以下操作:

host2:/tmp# ./test.sh
host2

从 host1,我希望能够调用函数 f 并让它在 host2 上运行(所以在这个例子中,它会打印“host2”,因为 f只需调用 hostname)。但是,实际上我收到以下错误:

host1:~# ssh root@host2 /tmp/test.sh
/tmp/test.sh: line 1: utils.sh: No such file or directory
/tmp/test.sh: line 2: f: command not found

所以,很明显 test.sh 实际上在 host1 上运行——这就是为什么它找不到/tmp/utils.sh(因为它只在 host2 上)以及相应的为什么 if 不能运行函数 f.

是否可以在远程 shell 脚本中调用一个函数,并让它在远程机器上运行?或者我可以做些什么来实现类似的目标?

谢谢:-)

最佳答案

啊,我的脚本中有一个错误。

test.sh应该是

. /tmp/utils.sh
f

我缺少 utils.sh 脚本的完整路径。

-编辑添加:-

值得注意的是,没有必要在新脚本中将 & 函数调用中的点包裹起来——也可以像这样直接调用:

host1:~# ssh root@host2 ". /tmp/utils.sh; f"
host2

关于linux - 是否可以在远程 shell 脚本中调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18705149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com