使用多个参数检查用户信息

Checking user info with multiple parameters

我必须使用给定的名称作为参数打印有关用户的信息。例如,假设

./script1.sh 约翰 应该给我

John Doe(用户名)-上次登录-

我想我做到了,但我还必须检查多个参数,例如

./script1.sh John Jane Etrjk

John Doe(用户名)-上次登录-

Jane Doe(用户名)- 上次登录

未找到 Etrjk

而且我不知道如何在我的脚本中使用多个参数 到目前为止,这是我的脚本(适用于 1 个参数):

if [ -z " ]
then
echo "no arguments"
exit
fi

var = 

if grep -q "" /etc/passwd
then
echo "FOUND"
awk 'BEGIN {FS = ":" }; /''/ {print ,}' /etc/passwd
var2=$(awk 'BEGIN {FS = ":" }; /''/ {print }' /etc/passwd
lastlog -u $var2 | awk 'NR==2 {print ,,}'
else
echo "not found"

fi

你会做:

for name in "$@"; do 
...
done

shell 允许简写 for name do 迭代位置参数。我更愿意明确说明。

将参数传递给 awk 的安全方法是使用 -v 选项:

username=$(awk -v name="$name" 'BEGIN {FS = ":" }; [=11=] ~ name {print }' /etc/passwd)

我建议您养成使用有意义的变量名的习惯。它将帮助任何正在阅读您的代码的人(包括您)。