For loop Zsh:for循环生成失败的awk模式

For loop Zsh:for循环生成失败的awk模式,for-loop,zsh,For Loop,Zsh,我正在编写一些脚本来管理服务器上具有特定配额的用户 因此,为了将10GB这样的配额应用于组quota10中的所有用户,我使用了“setquota-p”,但我有几个组 所以我制作了一个脚本来管理所有组中的所有用户 #!/bin/zsh groups=(1002 1007) for gid in $groups echo $gid echo $(awk -F: '$4 == gid {print $1}' gid=$gid /etc/passwd) 但是当我执行它时,只有最后一个组

我正在编写一些脚本来管理服务器上具有特定配额的用户

因此,为了将10GB这样的配额应用于组quota10中的所有用户,我使用了“setquota-p”,但我有几个组

所以我制作了一个脚本来管理所有组中的所有用户

#!/bin/zsh
groups=(1002 1007)
for gid in $groups
    echo $gid
    echo $(awk -F: '$4 == gid {print $1}' gid=$gid /etc/passwd)
但是当我执行它时,只有最后一个组给我这个组中的用户

/etc/passwd /等/小组 我的脚本的输出
您知道哪里出了问题吗?

您必须将函数包装在一个块中:

for gid in $groups
do
    echo $gid
    echo $(awk -F: '$4 == gid {print $1}' gid=$gid /etc/passwd)
done

非常感谢,我通常在一行中创建循环,所以我不知道这个技巧。
quota10:x:1002:
quota20:x:1007:
# ./apply_quota_on_users.zsh
1002
1007
kiminoo
for gid in $groups
do
    echo $gid
    echo $(awk -F: '$4 == gid {print $1}' gid=$gid /etc/passwd)
done