我在.bashrc
之上做了这个的.bashrc
vm_name=$(curl http://artii.herokuapp.com/make?text=saml)
echo -e \"
$vm_name
\"
\[\] _
| |
___ __ _ _ __ ___ | |
/ __|/ _ _ \| |
\__ \ (_| | | | | | | |
|___/\__,_|_| |_| |_|_|
\[\]
我收到了这个错误
-bash:命令替换:第9行:意外标记
|' -bash: command substitution: line 9:
|附近的语法错误'_'
有没有办法绕过这个错误并强制我的回声将我的横幅视为字符串?
答案 0 :(得分:1)
虽然您找到了问题的解决方案,但值得解释您的问题。通过转义双引号,可以防止它们被解析为语法引号(它们被解释为文字引号)。
因此,您没有回显$vm_name
前面和后面跟空行:您实际上是回显"
,有空命令行(什么也不做),然后尝试执行{{vm_name
的内容1}}扩展,受分词限制,然后被看作是一个跟随参数的命令(可以理解地失败)。
以下内容有效:
vm_name=$(curl http://artii.herokuapp.com/make?text=saml)
echo -e "
$vm_name
"
当然,只执行curl
命令而不在变量中捕获它更简单。
请记住转义双引号不会被解释为字符串分隔符,它们是字面双引号。