私はシェル スクリプトと Linux 環境の初心者です。
私のプロジェクトでは、 httpd.conf ファイルから次のテキストを検索しようとしています
<Directory '/somedir/someinnerdir'>
AllowOverride All
</Directory>
次に、このテキストを削除して、同じテキストをもう一度書き直します。この書き換えを行う理由は、スクリプトが Web アプリの最初のインストール時に実行されるためですが、このシェル スクリプトの他の部分が他のタスクも実行しているため、しばらくしてから再度実行される可能性があるためです。したがって、最初はこのテキストが見つからず、単純に書き込まれますが、後でスクリプトを実行すると、このテキストが見つかり、削除して再度書き込む必要があります。
したがって、これを達成しようとしているスクリプトの部分は次のようなものです。
grep -ve "<Directory '/somedir/someinnerdir'>\\nAllowOverride All\\n</Directory>" /etc/httpd/conf/httpd.conf > tmp_direct
echo -e "<Directory '/somedir/someinnerdir'>\\nAllowOverride All\\n</Directory>" >> tmp_direct
mv tmp_direct /etc/httpd/conf/httpd.conf
現在目の前にコードがないため、上記の構文エラーがある可能性がありますが、ロジック/コーディングは同じです。
上記のコード フラグメントは、grep コマンドが複数行の検索をサポートしていないため、達成したいことを実行できません。
私のOSはFedora8です。
必要なことを達成するために、このコードで何かを提案してください。
この点でどんな助けでも大歓迎です。
前もって感謝します。
返信ありがとうございます。
以前の悪いコードで申し訳ありません。現在修正されています。
Charlie と i-moan、作業性の制約により、このプロジェクトを配布する環境に追加する必要があるため、sed または perl を実装することはできません。
スティーブ、複数行のチェックをしたい。コードブロックに入れなかったので、ディレクトリタグを削除しました。:(
そのため、別の方法を見つける必要があります。
再度、感謝します。
よろしくお願いします。