如何在远程主机上运行bash function()?在Ubuntu中

Mad*_*ake 2 linux ssh bash shell

我正在运行bash脚本,但是当我尝试在远程计算机上运行函数时,它说

bash: keyConfig: command not found
Run Code Online (Sandbox Code Playgroud)

这是我的脚本:

keyConfig() {
    sed -i.bak -r "/^$1/s/([^']+')([^']+)('.*)/\1$2\3/" $3
}

remoteExecution() {
    ssh ppuser@10.101.5.91 " keyConfig $1 $2 $4 "
}

remoteExecution
Run Code Online (Sandbox Code Playgroud)

ani*_*ane 5

简单的解决方法:

remoteExecution() {
    ssh ppuser@10.101.5.91 "`declare -f keyConfig`; keyConfig $1 $2 $4"
}
Run Code Online (Sandbox Code Playgroud)

在这里,keyConfig仅调用sed命令,该命令在远程系统上可用。如果keyConfig已经在调用任何本地函数,则在declare -f的命令行中也添加该函数。

这样,keyConfig本地外壳程序中的函数在通过ssh生成的远程外壳程序中定义,然后被调用。