【问题标题】:Special character in string variable in shell scriptshell脚本中字符串变量中的特殊字符
【发布时间】:2021-01-11 11:32:27
【问题描述】:
PubkeyContent=$(cat $Pubkey)    
read -r -d '' SSH_SCRIPT <<EOM
    \$(grep ${PubkeyContent} ~/.ssh/authorized_keys")
EOM

我得到了错误的结果。

[Debug] SSH_SCRIPT = $(grep ssh-rsa AAAAB3NzaC1yc2EAAAzSb7WKnMsysGA8kuq5Ysp02Y75d5 sam ~/.ssh/authorized_keys")com

我想要这个结果

 [Debug] SSH_SCRIPT = $(grep "ssh-rsa AAAAB3NzaC1yc2EAAAzSb7WKnMsysGA8kuq5Ysp02Y75d5 sam@com" ~/.ssh/authorized_keys")

【问题讨论】:

    标签: linux shell ubuntu sh


    【解决方案1】:

    一个简单的解决方法是在 here-doc 中引用 PubkeyContent 变量内容,即

    read -r -d '' SSH_SCRIPT <<EOM
        \$(grep "${PubkeyContent}" ~/.ssh/authorized_keys")
    EOM
    

    或者,如果您使用的是 bash/ksh/zsh shell,它支持一种使用输入重定向 &lt; file 自动插入文件内容的方法,从而避免了 cat 的无用使用。您可以将内部命令替换应用为

    read -r -d '' SSH_SCRIPT <<EOM
        \$(grep "$(<"$Pubkey")" ~/.ssh/authorized_keys")
    EOM
    

    【讨论】:

    • 什么意思?你会得到什么?
    • 我想我知道为什么它不工作......因为公钥是由 Windows 创建的......
    • @Samuel:你可以从key修复DOS结尾,再试试上面的逻辑
    猜你喜欢
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    相关资源
    最近更新 更多