如何在当前Shell中执行由字符串生成的SSH会话?
解决SSH命令在当前Shell执行并支持交互的问题
原来通过function_name args | bash执行时,管道会创建子shell,SSH会话的输入输出被绑定到管道,无法和终端交互。要让SSH在当前Shell中执行并支持交互,直接用命令替换让当前Shell解析执行生成的命令即可:
执行方式
直接运行:
$(shortcut_for_ssh args)
或者使用反引号写法(推荐用$(),可读性更强):
`shortcut_for_ssh args`
这个方法的原理是:命令替换会先执行shortcut_for_ssh args得到ssh user@hostname字符串,然后当前Shell直接解析并执行这条命令,SSH会话会直接绑定到当前终端,自然支持输入交互。
优化函数(可选)
为了避免函数输出多条命令导致意外执行,可以给grep加上-m1参数,只取匹配的第一行结果:
function shortcut_for_ssh(){ grep ssh notesfile | grep -m1 $1 }
内容的提问来源于stack exchange,提问作者David Boshton
相关产品推荐
相关产品推荐

