Linux 删除大量用户的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

我的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/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!祝你好运