""
次の例のように、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