将 /home 目录添加到 linux 中的现有用户

Adding /home directory to the existing user in linux

下面提到的代码无法正常工作(CentOS 7/bash 文件代码):

#!/bin/bash
cat /etc/passwd | egrep -v '^(root|halt|sync|shutdown)' |
awk -F: '( != "/sbin/nologin" &&  != "/bin/false") { print  " "  }' |
while read user dir; do
   if [ ! -d "$dir" ]; then
      echo "The home directory ($dir) of user $user does not exist."
   fi
done

这里写的代码是无限循环的。 你能告诉我该怎么做吗?

正如已经建议的那样,在 grep 中不必要地使用 cat,然后在 awk 中不必要地使用 grep。您可以使用以下内容压缩执行:

#!/bin/bash
awk -F: ' !~ /root|halt|sync|shutdown/ &&  != "/sbin/nologin" &&  != "/bin/false" 
{ print  " "  }' /etc/passwd | while read user dir;
do
 if [[ ! -d "$dir" ]];
 then
     echo "The home directory ($dir) of user $user does not exist."
 fi
done