'Checking user info with multiple parameters

I have to print information about the user with the name given as a parameter. For example let's say

./script1.sh John should give me

John Doe (username) -last login-

I think I managed this, but I also have to check multiple parameters like

./script1.sh John Jane Etrjk

John Doe (username) -last login-

Jane Doe (username) -last login

Etrjk not found

and I do not know how to use multiple parameters in my script this is my script so far (works for 1 parameter):

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

var = $1

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

fi


Solution 1:[1]

You'll do:

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

The shell allows the shorhand for name do to iterate over the positional parameters. I prefer to be explicit about it.

The safe way to pass parameters into awk is with the -v option:

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

I suggest you get into the habit of using meaningful variable names. It will help anyone (including you) who is reading your code.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1