
このコマンドライン(Centos 7)にはどのような問題がありますか?
if (grep ssl_certificate /etc/nginx/conf.d/platform.conf)
then echo $(grep ssl_certc /etc/nginx/conf.d/file.conf) > /etc/nginx/conf.d/file-certs.conf
fi
file.confには、ssl_certificateとssl_certificate_keyを含む2行があります。既存のSSL証明書を/etc/nginx/conf.d/file.confから/etc/nginx/conf.d/file-certs.confに移動する必要があります。
答え1
何もない構文的にコードスニペットにエラーがありますが、一般的ではありません。
ファイルで文字列が見つかったかどうかをテストし、見つかった場合にいくつかのgrep
操作を実行するには、次のようにします。
if grep -qwF ssl_certificate /etc/nginx/conf.d/platform.conf; then
options-q
と-w
quit()を-F
作成し、正規表現()の代わりに固定文字列で指定されたパターンを一致させます。さらに、完全なgrep
-q
-F
-w
grep
言葉。この場合、文字列はssl_certificate3
次のようになります。いいえパターンを一致させます。
grep
ファイルで文字列が見つかると、終了ステータス 0 が返され、文の本文がif
実行されます。
声明
echo $(somecommand)
一種の役に立たない。
コマンド置換は$(somecommand)
の出力に置き換えられ、somecommand
シェルは結果文字列に対してトークン化およびファイル名生成を実行します(不要になる可能性があります)。ちょうど終わることができたのでそれを使っても役に立ちecho
ません。
somecommand
全if
内容:
if grep -qwF ssl_certificate /etc/nginx/conf.d/platform.conf; then
grep -wF ssl_certc /etc/nginx/conf.d/file.conf >/etc/nginx/conf.d/file-certs.conf
fi
(これはssl_certc
完全な単語であると仮定します。そうでない場合は-w
単語から削除してくださいgrep
)
または段落構文を使用して
grep -qwF ssl_certificate /etc/nginx/conf.d/platform.conf &&
grep -wF ssl_certc /etc/nginx/conf.d/file.conf >/etc/nginx/conf.d/file-certs.conf
になります。書く/etc/nginx/conf.d/file-certs.conf
ファイルが存在するかどうか。次へ>
変更>>
追加上書きしたくない場合は、ファイルが代わりに書き込まれます。