gpt4 book ai didi

linux - Shell 函数提前退出而不是遍历所有内容

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:56:33 25 4
gpt4 key购买 nike

我正在尝试遍历用户列表,但此代码在第一次删除后终止。这里有什么问题吗?

#!/bin/bash

function delete_users() {
echo "Deleting system users"
local USERS_TO_DELETE="test test2 test3"
for USER in $USERS_TO_DELETE
do
local USER_EXIST=$(getent passwd ${USER})
if [ -z "$USER_EXIST" ]
then
echo "User $USER does not exist"
elif [ -n "$USER_EXIST" ]
then
exec userdel $USER
echo "Successfully deleted $USER account"
fi
done
return 0
}

delete_users

最佳答案

您的代码正在运行 exec userdel

exec 关键字 [在此上下文中使用时,而不是单独使用重定向列表] 告诉 shell 直接使用 execv 系列系统调用来调用 userdel,前面没有 fork()。这意味着 shell 不再存在——它的进程表条目直接替换为 userdel 的条目。

关于linux - Shell 函数提前退出而不是遍历所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37685837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com