1

在我的 .bashrc 中包含这一行后,我收到了意外的文件结束错误

alias domsrv01='echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35'

从 echo 到 xclip 的期望退出是:

?HT_R8'%

正如您可能猜到的那样,这是一个密码,我无法更改它:

如何从密码中转义单引号字符以修复 EOF 错误?

另外,我不确定单引号是否是这里唯一的问题,可以“?” 和“%”也被解释为有趣的方式?

4

2 回答 2

1

您不能直接在 bash 中的单引号内转义单引号。但是,由于 bash 连接相邻的字符串,您可以改用此构造'text'"'"'moretest'。您实际上以单引号结束单引号字符串,并立即添加双引号单引号,然后是字符串的其余部分(在单引号中)。在您的具体示例中,该命令如下所示:

alias domsrv01='echo -e ?HT_R8\'"'"'% | xclip ; ssh 10.50.0.35'

有关该主题的更多讨论可以在这里找到:如何在单引号字符串中转义单引号?

已编辑:添加了@GordonDavisson 注意到的缺失的反弹

于 2013-07-12T09:29:33.703 回答
1

别名用于短文本替换,而不是完整的 shell 命令。使用一个函数:

domsrv01 () {
    echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35
}
于 2013-07-12T13:31:15.213 回答