无法让ASCII艺术回显到控制台

use*_*316 21 bash scripting ascii syntax-error

我是Bash脚本的新手,这对我来说很困惑.我正在为项目添加ASCII艺术,似乎无法弄清楚如何逃避某些字符.有人请帮助我下面的代码工作吗?

每当我尝试添加斜杠作为转义字符来修复错误时,斜杠也会在执行时打印到控制台.这破坏了形象.我不明白我做错了什么,所以我发布了下面的代码,希望有人花一点时间向我展示正确的方法.请?我删除了引号以防止更混乱.

echo -en "\E[31m"
echo
echo       _,.
echo     ,` -.)
echo    '( _/'-\\-.              
echo   /,|`--._,-^|          ,    
echo   \_| |`-._/||          ,'|      
echo     |  `-, / |         /  /     
echo     |     || |        /  /      
echo      `r-._||/   __   /  / 
echo  __,-<_     )`-/  `./  /
echo '  \   `---'   \   /  /
echo     |           |./  / 
echo     /           //  /    
echo \_/' \         |/  /        
echo  |    |   _,^-'/  /             
echo  |    , ``  (\/  /_       
echo   \,.->._    \X-=/^        
echo   (  /   `-._//^` 
echo    `Y-.____(__}             
echo     |     {__)          
echo           ()`    
Run Code Online (Sandbox Code Playgroud)

tha*_*guy 64

bash中的引用是重要的句法元素,而不是混乱.但是,要打印ASCII艺术,请省去正确引用和转义的麻烦,只需使用here document:

cat << "EOF"
       _,.
     ,` -.)
    '( _/'-\\-.               
   /,|`--._,-^|            ,     
   \_| |`-._/||          ,'|       
     |  `-, / |         /  /      
     |     || |        /  /       
      `r-._||/   __   /  /  
  __,-<_     )`-/  `./  /
 '  \   `---'   \   /  / 
     |           |./  /  
     /           //  /     
 \_/' \         |/  /         
  |    |   _,^-'/  /              
  |    , ``  (\/  /_        
   \,.->._    \X-=/^         
   (  /   `-._//^`  
    `Y-.____(__}              
     |     {__)           
           ()`     
EOF
Run Code Online (Sandbox Code Playgroud)

请务必不要在此处删除引号.它们不是可选的.

  • 第一个分隔标识符(即:“EOF”)上的引号是必要的,因为它将整个事物视为文本和反斜杠的特殊含义,引号和反引号不会出现。 (2认同)
  • 在 bash 脚本中运行此命令时,出现“意外的文件结尾”。通过删除结束 EOF 之前的所有空格解决了这个问题。/sf/ask/1399057901/#answer-19986600 (2认同)