我想创建一个Bash脚本来检查/etc/passwd
中是否存在用户名。如果存在,则将其添加到users.txt
文件。
我不擅长UNIX编程,所以我希望有人可以帮助我。
while(get to the end of /etc/passwd){
name=$(cat /etc/passwd | cut -d: -f1);
num1=$(cat /etc/passwd | cut -d: -f3);
num2=$(cat /etc/passwd | cut -d: -f4);
if(num1==num2)
/*i compare argv[0] with $name */
/* if true i=1 */
}
if(i==1)
save following string "argv[0]=agrv[1]"
else
"error message"
答案 0 :(得分:4)
#!/bin/bash
read -p "Username: " username
egrep -q "^$username:" /etc/passwd && echo $username >> users.txt
注意:如果您只是尝试测试是否存在用户名,最好只使用id
:
if id -u $username >/dev/null 2>&1;
then
echo $username >> users.txt
fi
> /dev/null 2>&1
仅用于停止正在打印的id
的输出(即uid
$username
的输出(如果存在),或用户的错误消息不)。
答案 1 :(得分:0)
#!/bin/bash
read -p "Enter a username: " username
getUser=$(cat /etc/passwd | grep $username | cut -d":" -f1)
echo $getUser >> users.txt
并不是真的需要一个循环,好像它不存在它不会#39;添加任何东西到文件。
答案 2 :(得分:0)
#!/bin/bash
found=false
while IFS=: read -r name _ num1 num2 _
do
if (( num1 == num2 ))
then
if [[ $name == $1 ]]
then
printf '%s\n' "$1=$2"
found=true
fi
fi
done < /etc/passwd > users.txt
if ! found
then
printf '%s\n' "error message" >&2
if [[ -e users.txt && ! -s users.txt ]]
then
rm users.txt
fi
fi