在我的 .bashrc 中包含这一行后,我收到了意外的文件结束错误
alias domsrv01='echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35'
从 echo 到 xclip 的期望退出是:
?HT_R8'%
正如您可能猜到的那样,这是一个密码,我无法更改它:
如何从密码中转义单引号字符以修复 EOF 错误?
另外,我不确定单引号是否是这里唯一的问题,可以“?” 和“%”也被解释为有趣的方式?
您不能直接在 bash 中的单引号内转义单引号。但是,由于 bash 连接相邻的字符串,您可以改用此构造'text'"'"'moretest'
。您实际上以单引号结束单引号字符串,并立即添加双引号单引号,然后是字符串的其余部分(在单引号中)。在您的具体示例中,该命令如下所示:
alias domsrv01='echo -e ?HT_R8\'"'"'% | xclip ; ssh 10.50.0.35'
有关该主题的更多讨论可以在这里找到:如何在单引号字符串中转义单引号?
已编辑:添加了@GordonDavisson 注意到的缺失的反弹
别名用于短文本替换,而不是完整的 shell 命令。使用一个函数:
domsrv01 () {
echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35
}