Por que estou recebendo um erro de sintaxe de | neste roteiro?

1

Estou recebendo um erro desse script

#!/bin/bash

red="3[31m"
green="3[32m"
yellow="3[33m"
blue="3[34m"
pink="3[35m"
cyan="3[36m"
white="3[37m"
echo ""
echo -e  "${green}       _ __  ___ ___ "
echo -e  "${green}      | '_ \/ __/ __|"
echo -e  "${green}      | | | \__ \__ \"
echo -e  "${green}      |_| |_|___/___/"
echo -e "${blue}        Welcome My first program"
echo ""

Erro dado a mim pelo sistema

./my_first_program.sh: Line 14: unexpected token '| ' Syntax error near
./my_first_program.sh: Line 14: 'echo -e  "${green} |_| |_|___/___/"'

Como posso corrigir isso?

    
por a12c4f823027 28.08.2017 / 21:29

2 respostas

9

Na linha

echo -e  "${green}      | | | \__ \__ \"

o \ antes do " remove o significado especial do " e o torna um caractere normal que não termina a string. Assim, a sequência continua até a próxima linha até que " antes de ${green} e a seguinte ${green} |_| |_|___/___/ não seja mais citada, o que causa o erro.

Adicione um espaço após o \ para evitar que ele escape do " :

echo -e  "${green}      | | | \__ \__ \ "
    
por Florian Diesch 28.08.2017 / 21:48
1

Ok, fiz modificações no seu script e aqui está o código:

#!/bin/bash

red="3[31m"
green="3[32m"
yellow="3[33m"
blue="3[34m"
pink="3[35m"
cyan="3[36m"
white="3[37m"

echo ""
echo -e  "${green}       _ __  ___ ___ "
echo -e  "${green}      | '_ \/ __/ __|"
echo -e  "${green}      | | | \__ \__ \"
echo -e  "${green}      |_| |_|___/___/"
echo -e  "${blue}       Welcome My first program"
echo ""

A mudança é usar \" em vez de \" . Isso imprime uma barra invertida literal e termina citando , em vez de imprimir um literal " e não terminar de citar. (O shell trata ambas as barra invertida e documentos duplos especialmente sob algumas circunstâncias.)

    
por George Udosen 28.08.2017 / 21:49

Tags