linux - BASH grep 脚本

标签 linux bash shell loops grep

我正在尝试使用 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/

相关文章:

bash - 需要查找文件中字符串的数量

linux - 文件上的 sed 等同于变量

c++ - 如何监视哪些进程访问 Unix 中的特定文件?

c - 为什么使用前初始化的变量比未初始化的变量更快

c - __libc_start_main 和 _start 是什么?

regex - SED:在单引号后替换字符串

linux - Shell 脚本,命令行参数

.net - .NET Windows 服务的 Linux Mono 等价物

linux - -b 选项在 SFTP 中有什么作用

linux - 用于比较列中数字的 Bash 脚本