【发布时间】:2023-03-30 09:10:01
【问题描述】:
我正在尝试使用 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
【问题讨论】:
-
问题不清楚?您希望输入用户名作为脚本的参数,例如
./script user_to_check? -
你应该阅读quoting和command substitution。
-
@sjsam 是的,我想在我输入 ./script user_to_check 的地方使用脚本功能。如果找到用户名,我想输出找到它的所有行,这就是我使用 grep 的原因。但是,如果找不到用户名,我想回应一下。
-
@Cyrus 感谢您的链接。我已经用这个脚本的各种迭代尝试了几次拼写检查。虽然有些返回没有错误,但输出从来都不是我想要的。不过感谢您的建议。
标签: linux bash shell loops grep