以下のコマンドは、最小パスワード使用期間が1日ではないユーザーのリストを提供します。これはうまくいきます。
awk -F: '$4 < 1 {print $1}' /etc/shadow
このリストを使って実行したいのですが...
chage -m 1 $p
ここで、 $p は各行のユーザー名です。
通常、私はこのリストをファイルに保存し、それに対してwhileループを実行します。すべてのユーザーの最小パスワードを1日に変更する完全なコマンドについては、以下を参照してください。
mkdir ./tmp
awk -F: '$4 < 1 {print $1}' /etc/shadow > ./tmp/usernamelist
while read p; do
chage -m 1 $p
done <./tmp/usernamelist
rm -rf ./tmp/usernamelist
ファイルを保存せずに論理的に同じことを行う方法はありますか?これはベストプラクティスですか?
パイプコマンドを使用してこれを行う方法があると思いますが、正しい構造化方法が見つかりません。
ベストアンサー1
パイプを使用するか、
awk -F: '$4 < 1 {print $1}' /etc/shadow |
while read p; do
chage -m 1 "$p"
done
またはプロセスと交換
while read p; do
chage -m 1 "$p"
done < <(awk -F: '$4 < 1 {print $1}' /etc/shadow)