-bash:命令替换:意外令牌附近的语法错误|'

时间:2017-04-27 20:38:52

标签: linux bash shell unix centos

我在.bashrc

之上做了这个

的.bashrc

vm_name=$(curl http://artii.herokuapp.com/make?text=saml)
echo -e \"





$vm_name



\"

我得到了

\[\]                      _ 
                     | |
  ___  __ _ _ __ ___ | |
 / __|/ _ _ \| |
 \__ \ (_| | | | | | | |
 |___/\__,_|_| |_| |_|_|

                        \[\]

我收到了这个错误

  

-bash:命令替换:第9行:意外标记|' -bash: command substitution: line 9: |附近的语法错误'_'

有没有办法绕过这个错误并强制我的回声将我的横幅视为字符串?

1 个答案:

答案 0 :(得分:1)

虽然您找到了问题的解决方案,但值得解释您的问题。通过转义双引号,可以防止它们被解析为语法引号(它们被解释为文字引号)。

因此,您没有回显$vm_name前面和后面跟空行:您实际上是回显",有空命令行(什么也不做),然后尝试执行{{vm_name的内容1}}扩展,受分词限制,然后被看作是一个跟随参数的命令(可以理解地失败)。

以下内容有效:

vm_name=$(curl http://artii.herokuapp.com/make?text=saml)
echo -e "


$vm_name

"

当然,只执行curl命令而不在变量中捕获它更简单。

请记住转义双引号不会被解释为字符串分隔符,它们是字面双引号。