将 /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
下面提到的代码无法正常工作(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