您好我目前正在使用grep函数对我的/ etc / passwd文件进行搜索,以检查输入的GID是否与系统GID匹配。但我试图做一个grep函数但只显示echo内容而不是显示所有匹配的GID。以下是我的输出:
elif grep -n $gid /etc/passwd|cut -f4 -d":"
then
echo "$gid exist!"
exit1
答案 0 :(得分:1)
-q
选项会抑制输出:
elif grep -q $gid /etc/passwd
then
echo "$gid exist!"
exit1
cut
不需要。 注意这将匹配$gid
中任意位置的passwd
号,您可以进一步解析数据,将搜索范围限制在gid
字段。例如:
elif awk -F ':' '{ print $4; }' /etc/passwd | grep -q $gid
then
echo "$gid exist!"
exit1
答案 1 :(得分:1)
您可以使用选项“-o”来简化命令,该选项仅打印匹配行的匹配部分。 您还必须使用正则表达式以确保具有正确的GID,而不是部分GID或UID。
grep命令应该类似于:
grep -o -E "^[^:]+:[^:]*:[0-9]+:$gid:" /etc/passwd
整个解决方案是:
if [ condition ] ; then
command
elif [ -n `grep -o -E "^[^:]+:[^:]*:[0-9]+:$gid:" /etc/passwd` ] ; then
echo "$gid exists!"
exit 1
fi