![bash 脚本中的内存缓冲区](https://linux22.com/image/40530/bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%9A%84%E5%86%85%E5%AD%98%E7%BC%93%E5%86%B2%E5%8C%BA.png)
function
我最近完成了一个脚本,该脚本将询问主机名并自动将和的参数ssh
带入我的工作服务器之一。
这是我的脚本的副本:
#!/bin/bash
echo "Provide hostname: "
read host
createSSHFunction()
{
arg1=$1
ssh $host
}
createSSHFunction $host
while((1)); do ~/sshScript.sh; done
但我注意到的是,我想要ssh
进入其中一台服务器,但我断开了连接,本能地我会按向上箭头键重新显示我上次输入的相同参数。这是一个例子:
Provide hostname:
crf-alpha
support@localhost's password:
Last login: Thu Jul 24 12:16:33 2014 from localhost
[support@crf-alpha ~]$
Connection to localhost closed.
Provide hostname:
^[[A
有没有一种方法可以在我当前的脚本中进行编码,它将缓冲我最后输入的任何内容?例如,我ssh
进入 crf-alpha,然后就断开了连接。我的脚本将再次运行,提示我输入主机名,我希望这样,如果我按向上箭头键,我输入的最后一个输入将重新显示,所以在这种情况下是 crf-alpha 而不是我总是使用的奇怪符号得到。
答案1
如果您可以安装该rlwrap
实用程序,那么就像执行以下操作一样简单
rlwrap ./yourscript.sh
这将允许您使用向上和向下数组键浏览历史记录,以及使用向右和向左箭头键编辑当前命令(对于尚不支持它的程序)。