我是Linux Scripting的新手并且坚持这个练习。 我需要找出当前用户是否是最后添加的用户。 如果没有,那么我需要显示最后添加的用户。
这是我的剧本:
#!/bin/bash --
lastUser ='tail -1 /etc/passwd | cut -d: -f1'
if [[ $lastUser -ne $USER ]]; then
echo "I am $USER and I am not the last added user."
echo "The last added user is $lastUser."
else
echo "I am $USER and I am the last added user."
fi
我得到的错误:line 3: lastUser: command not found.
我做错了什么?
答案 0 :(得分:1)
这应该可以解决问题:
lastUser=$(tail -1 /etc/passwd | cut -d: -f1)
if [ "$lastUser" != "$USER" ]; then
echo "I am $USER and I am not the last added user."
echo "The last added user is $lastUser."
else
echo "I am $USER and I am the last added user."
fi
lastUser
是您提供的代码中的字符串,它不执行cmd。
另外,不要忘记不在=
答案 1 :(得分:0)
/etc/passwd
未排序!如果添加了一些系统用户,则使用tail -n1 /etc/passwd
可能会出错(对于安装新守护程序时的示例)。
对于示例,运行命令pwck -s
将按UID对您的/etc/passwd
文件进行排序。
但是由于移除的用户的UID可以重新分配给新用户,这种方式不是很好...
你可以考虑这个bash脚本:
#!/bin/bash
uid=0 unam=root
last=65000
[ -f /etc/adduser.conf ] && last=$(
. /etc/adduser.conf
echo $LAST_UID
)
while IFS=: read cunam foo cuid foo;do
[ $cuid -gt $uid ] &&
[ $cuid -le $last ] &&
uid=$cuid unam=$cunam
done </etc/passwd
if [[ $uid -ne $UID ]]; then
echo "I am '$USER' and I am not the last added user."
echo "The last added user is user #$uid: '$unam'."
else
echo "I am $USER and I am the last added user."
fi
由于此类请求(知道谁是上次创建的用户)不是常见(支持)请求,您可以添加自己的规则:
sudo tee >/dev/null /usr/local/sbin/adduser.local <<"eoadd"
#!/bin/sh
date +"%s $1" >>/etc/flat_userfile
eoadd
sudo tee >/dev/null /usr/local/sbin/deluser.local <<"eodel"
#!/bin/sh
sed -e "/ $1$/d" -i /etc/flat_userfile
eodel
sudo chmod +x /usr/local/sbin/{add,del}user.local
完成后,每次添加或删除一个用户时,都会在/etc/flat_userfile
中添加或删除一行。
我使用date
代替echo
来存储帐户创建日期。