""
다음 예와 같이 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