Linuxコマンドラインのif構文

Linuxコマンドラインのif構文

このコマンドライン(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-wquit()を-F作成し、正規表現()の代わりに固定文字列で指定されたパターンを一致させます。さらに、完全なgrep-q-F-wgrep言葉。この場合、文字列は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ファイルが存在するかどうか。次へ>変更>>追加上書きしたくない場合は、ファイルが代わりに書き込まれます。

おすすめ記事