使用多个参数检查用户信息
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)
我建议您养成使用有意义的变量名的习惯。它将帮助任何正在阅读您的代码的人(包括您)。
我必须使用给定的名称作为参数打印有关用户的信息。例如,假设
./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)
我建议您养成使用有意义的变量名的习惯。它将帮助任何正在阅读您的代码的人(包括您)。