![큰따옴표: "' 표시는 '('"를 예상하지 않음 근처의 구문 오류입니다.](https://linux55.com/image/92501/%ED%81%B0%EB%94%B0%EC%98%B4%ED%91%9C%3A%20%22'%20%ED%91%9C%EC%8B%9C%EB%8A%94%20'('%22%EB%A5%BC%20%EC%98%88%EC%83%81%ED%95%98%EC%A7%80%20%EC%95%8A%EC%9D%8C%20%EA%B7%BC%EC%B2%98%EC%9D%98%20%EA%B5%AC%EB%AC%B8%20%EC%98%A4%EB%A5%98%EC%9E%85%EB%8B%88%EB%8B%A4..png)
""
다음 예와 같이 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