このスクリプトの目的は、/etc/login.defs ファイル内のパスワードの最小有効期間を変更することです。
私の問題は、このスクリプトが実行され、エラーは発生しないものの、vi でファイルにアクセスしても何も変更されないことです。私は sed に詳しくないので、何か問題があると思います。何が問題なのかを突き止めるのに支援が必要です。
min_pass_age=7
sed -i "s/^PASS_MIN_DAYS.*/PASS_MIN_DAYS ${min_pass_age}/" /etc/login.defs
答え1
いくつかの点を修正しました。行の先頭の行をピックアップし、コメント行を無視する必要があるため、最後に /g が必要です。二重引用符は使用せず、一重引用符のみを使用してください。
sed -i 's/^PASS_MAX_DAYS.*/PASS_MAX_DAYS 90/g' /etc/login.defs
sed -i 's/^PASS_MIN_DAYS.*/PASS_MIN_DAYS 7/g' /etc/login.defs