繁体   English   中英

在 RHEL 中使用 bash 循环通过 awk 命令

[英]Looping through awk command using bash in RHEL

我正在尝试遍历 bash 中的 awk 命令的 output。 我将 output 保存到一个变量中,当我循环时,所有 output 都保存为一个长字符串,而不是每个字符串都有自己的索引。 我将如何使用每个单独的字符串? 还有其他建议吗? 谢谢!

variable=`awk -F '$3 > 1000 { print $1 }' < /etc/password | grep -v 'person1\|person2'`

for x in "{$variable[@]}";do
chage -M 60 "$x"

从表面上看,目标是对任何 uid > 1000 的用户运行chage... ,不包括两个预定义用户(person1、person2)。 对循环的小修复应该可以解决问题。

修复了两个小问题:awk 使用 ':' 作为字段分隔符,bash 循环迭代一个简单的变量(而不是数组)。 解决方案将用户过滤器集成到 awk 脚本中,消除单独的grep

user_list=`awk -F: '$3 > 1000 && $1 !~ "$(person1|person2)$" { print $1 }' < /etc/password`

for x in $user_list ; do
    chage -M 60 "$x"
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM