Linux 删除大量用户的Bash脚本未运行
我的bash脚本不会运行,并且不会输出任何超过Linux 删除大量用户的Bash脚本未运行,linux,bash,Linux,Bash,我的bash脚本不会运行,并且不会输出任何超过echo“Running gke old user cleanup”的内容。没有失败消息,它只是不运行。有什么建议吗 #!/bin/bash set -o pipefail set -o nounset date echo "Running old user cleanup" for user in $(awk -F':' '$1 ~ /^kub-[a-z0-9]{20}$/ { print $1 }' /etc/passw
echo“Running gke old user cleanup”
的内容。没有失败消息,它只是不运行。有什么建议吗
#!/bin/bash
set -o pipefail
set -o nounset
date
echo "Running old user cleanup"
for user in $(awk -F':' '$1 ~ /^kub-[a-z0-9]{20}$/ { print $1 }' /etc/passwd); do
echo "Cleaning up '${user}'"
userdel -r "${user}"
rc=$?
if [[ $rc != 0 ]]; then
echo "Failed to cleanup '${user}': exit code: ${rc}"
else
echo "Successfully cleaned up '${user}'"
fi
done
也许可以简化循环
while read user
do if userdel -r "${user}"
then echo "Successfully cleaned up '${user}'"
else echo "Failed to cleanup '${user}': exit code: '$?'"
fi
done < <( awk -F':' '$1 ~ /^gke-[a-z0-9]{20}$/ { print $1 }' /etc/passwd )
读取用户时
如果userdel-r“${user}”,则执行此操作
然后echo“已成功清除“${user}”
else echo“未能清理“${user}”:退出代码:“$?”
fi
done<可能是,它确实运行,但循环条件为false?检查awk-F':''$1~/^gke-[a-z0-9]{20}$/{print$1}'/etc/passwd
是否输出任何内容。在shebang之后添加一个set-x
,使其更详细,也不要读取用于查看和验证shell脚本的行。@Jetchisel您能告诉我如何重新编写第9行,以便它与上面的wiki页面兼容。Thanks@zarrexx解析awk
的输出,请参阅查找进程替换方法。awk-F':''$1~/^gke-[a-z0-9]{20}$/{print$1}'/etc/passwd |而read-r user;do
将解决外壳检查问题。但是我支持上面的PP
。运行bare命令是否产生任何输出?好的第一个Q!祝你好运