我正在尝试使用 bash 脚本检查脚本参数中的用户名,然后从/etc/passwd 和/etc/group 文件(不是/etc/shadow 文件)输出相关行.目前,我正在使用 if then else 循环来检查/etc/* 目录的内容并输出相关信息。我的意图是如果在两个文件中找不到匹配用户,则输出简单的文本行,因此为空值。然而,它输出的信息与我正在寻找的完全不正确。作为 BASH 的新用户,而且 linux 是通用的,我确信马上就会出现一些明显的问题。但是,我正在努力学习。
如果您对我的脚本代码有任何帮助或指出正确方向,我们将不胜感激。谢谢。
#! /bin/bash
USERLOOK='grep -h $USERID ~/etc/* | grep :x:'
grep $1 ~/etc/*
if [ -z $1 ]; then
echo "User not found."
else
echo "$USERLOOK"
fi
exit 0
最佳答案
在 /etc/passwd
或 /etc/group
中查找包含输入的用户名的任何行:
#!/bin/bash
USERLOOK=$(grep -h "$1" /etc/passwd /etc/group)
if [ -z "$1" ] || [ -z "${USERLOOK}" ]; then
echo "User not found."
else
echo "$USERLOOK"
fi
关于linux - BASH grep 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38425121/