if then else 文の問題

if then else 文の問題

既存のファイルの一部のデータを確認するスクリプトを作成しようとしています。例:

#!/bin/bash

set -x
if [ 'grep PASS_WARN_AGE /etc/login.defs' == 'PASS_WARN_AGE    7' ]; then
        echo "RHEL-06-000054 not a finding"

elif [ 'grep PASS_WARN_AGE /etc/login.defs' == 'PASS_WARN_AGE    0' ]; then
        sed -ie 's/PASS_WARN_AGE\s\s\s\s0/PASS_WARN_AGE    7/g' /etc/login.defs

else echo "Needs further review"
fi

スクリプトはifおよびelif文字列を無視し、「追加のレビューが必要」文字列のみをエコーし​​ます。本質的に、私はこのスクリプトが現在の値が7に設定されているかどうかを知りたいと思います。値が7以外の0の場合は、sedコマンドを実行して/etc/login.defsファイルの値を変更します。不明な出力が表示された場合は、ユーザーに追加のチェックが必要であることを知らせます。すべての助けに感謝します。

ベストアンサー1

私はそれについて考えた。

    #!/bin/bash
set -x
grep -q 'PASS_WARN_AGE    7' /etc/login.defs
if [ ${?} -eq 0 ]; then
        echo "RHEL-06-000054 not a finding"

grep -q 'PASS_WARN_AGE    0' /etc/login.defs
elif [ ${?} -eq 0 ]; then
        sed -ie 's/PASS_WARN_AGE\s\s\s\s0/PASS_WARN_AGE    7/g' /etc/login.defs; echo "RHEL-06-000054 patched"

else echo "needs further review"
fi

おすすめ記事