是否有任何聪明的方法可以通过ssh在远程主机上运行本地Bash功能? 例如:
#!/bin/bash#Definition of the functionf () { ls -l; }#I want to use the function locallyf#Execution of the function on the remote machine.ssh user@host f#Reuse of the same function on another machine.ssh user@host2 f以上操作时行不通的,我知道这行不通,但是有办法实现吗?
以下是相关解决方法:
可以使用typeset命令通过ssh使功能在远程计算机上可用。有多个选项,具体取决于您要如何运行远程脚本。
#!/bin/bash# Define your functionmyfn () { ls -l; }要在远程主机上使用该功能:
typeset -f myfn | ssh user@host"$(cat); myfn"typeset -f myfn | ssh user@host2"$(cat); myfn"更好写法如下:,为什么还要麻烦管道:
ssh user@host"$(typeset -f myfn); myfn"或者,您可以使用HEREDOC:
ssh user@host