我已经创建了一个脚本,它将检查您提供的用户是否登录,如果登录,则显示会话的持续时间。我现在需要做的是,如果在发出命令时没有提供参数(用户名),那么请求一个参数,并获得与您提供的参数相同的结果。
以下是我所拥有的:
name=$(cat /etc/passwd | grep $1 | cut -d':' -f5 | tr ':' ' ' | sed 's/,//' | sed 's/^\([^ ]*\) \([^ ]*\)/\2 \1/' | sort -t' ' -k3,3)
terminal=$(who | grep $1 | cut -d' ' -f3)
loginHour=$(who | grep $1 | cut -c30-31)
loginMin=$(who | grep $1 | cut -c33-34)
loginMins=$((loginHour * 60 + loginMin))
nowHour=$(date +%R | cut -c1-2)
nowMin=$(date +%R | cut -c4-5)
nowMins=$((nowHour * 60 + nowMin))
totalMins=$((nowMins - loginMins))
hoursOn=$((totalMins / 60))
minsOn=$((totalMins % 60))
clear
echo
if [[ $# -eq 1 ]] ; then
grep -q $1 /etc/passwd
if grep -q $1 /etc/passwd ; then
clear
echo
if who | grep $1 > /dev/null ; then
echo "$name" is currently logged on to terminal "$terminal" and has been for "$hoursOn" hour"(s)" and "$minsOn" minute"(s)".
echo
exit 0
else
echo "$name" is NOT currently logged on.
echo
exit 1
fi
else
echo The user you entered is not a valid user on this system.
echo
exit 2
fi
fi我以前试过一次,但结果并不理想,所以我把它从混乱中删除了。
发布于 2014-04-30 16:02:24
if [[ $# -eq 0 ]]
then
read -p "Enter Name: " username
else
username=$1
fi然后将所有对$1的后续引用替换为$username
发布于 2014-04-30 16:04:12
如果没有指定名称,也可以中止。
# : does nothing it just forces the evaluation
: ${1:?"Need to provide name to script"}https://stackoverflow.com/questions/23392473
复制相似问题