큰따옴표: "' 표시는 '('"를 예상하지 않음 근처의 구문 오류입니다.

큰따옴표: "' 표시는 '('"를 예상하지 않음 근처의 구문 오류입니다.

""다음 예와 같이 echo 명령에 큰따옴표( )를 사용하고 싶습니다 .

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

이 텍스트를 "/etc/test.conf"에 넣고 싶습니다.

그러나 이것을 bash에 입력하면 오류가 반환됩니다.syntax error near unexpected token `('

이 오류를 어떻게 해결할 수 있나요?

답변1

문자열의 큰따옴표 안에 확장되는 일부 쉘 특수 문자가 있습니다.

셸에서 확장이 예상된다는 점을 고려하여 작은따옴표를 사용하세요.

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

이것은 문자 그대로 문자열을 처리합니다.

답변2

빈 줄을 넣고 싶은 것 같으므로 다음을 cat사용할 수 있습니다 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

관련 정보