.bashrc别名中的意外EOF

时间:2013-07-12 08:09:23

标签: echo bash xclip

在我的.bashrc

中包含此行后,我收到意外的文件错误结束
alias domsrv01='echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35'

从echo到xclip的所需退出是:

  

?HT_R8' %

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

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

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

2 个答案:

答案 0 :(得分:1)

你无法直接在bash中用单引号转义单引号。但是,由于bash连接相邻的字符串,因此您可以使用此结构'text'"'"'moretest'。实际上,您只需使用单引号结束单引号字符串,然后立即添加双引号单引号,后跟剩余的字符串(单引号)。在您的具体示例中,命令如下所示:

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

有关此主题的更多讨论可以在此处进行:How to escape single-quotes within single-quoted strings?

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

答案 1 :(得分:1)

别名用于短文本替换,而不是完整的shell命令。使用功能:

domsrv01 () {
    echo -e ?HT_R8\'% | xclip ; ssh 10.50.0.35
}