Aspas duplas: erro de sintaxe próximo ao 'token' não esperado '('

2

Eu quero usar aspas duplas ( "" ) dentro do comando echo como este exemplo abaixo:

echo "  
 ^%(log_prefix)s SecurityEvent=(FailedACL|InvalidAccountID|ChallengeResponseFailed|InvalidPassword)",EventTV="[\d-]+",Severity="[\w]+",Service="[\w]+",EventVersion="\d+",AccountID="\d+",SessionID="0x[\da-f]+",LocalAddress="IPV[46]/(UD|TC)P/[\da-fA-F:.]+/\d+",RemoteAddress="IPV[46]/(UD|TC)P/<HOST>/\d+"(,Challenge="\w+",ReceivedChallenge="\w+")?(,ReceivedHash="[\da-f]+")?$

 " > /etc/test.conf

E eu quero colocar este texto dentro de '/etc/test.conf'

Mas, quando eu digito esse bash, ele me retorna um erro: syntax error near unexpected token '('

Como posso corrigir esse erro?

    
por Vitor Mazuco 16.08.2016 / 15:53

2 respostas

4

Existem alguns caracteres especiais de shell que serão expandidos entre aspas duplas presentes na sua string.

Use aspas simples, já que você está esperando alguma expansão do shell:

echo '<your_string>' >/etc/test.conf

Isso tratará a string literalmente.

    
por 16.08.2016 / 15:56
1

Como você parece querer colocar linhas vazias, você pode usar cat em vez de echo :

cat << 'EOT' > /etc/test.conf

 ^%(log_prefix)s SecurityEvent=(FailedACL|InvalidAccountID|ChallengeResponseFailed|InvalidPassword)",EventTV="[\d-]+",Severity="[\w]+",Service="[\w]+",EventVersion="\d+",AccountID="\d+",SessionID="0x[\da-f]+",LocalAddress="IPV[46]/(UD|TC)P/[\da-fA-F:.]+/\d+",RemoteAddress="IPV[46]/(UD|TC)P/<HOST>/\d+"(,Challenge="\w+",ReceivedChallenge="\w+")?(,ReceivedHash="[\da-f]+")?$

EOT
    
por 16.08.2016 / 15:59

Tags