首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash脚本,如果没有提供,请请求arg

bash脚本,如果没有提供,请请求arg
EN

Stack Overflow用户
提问于 2014-04-30 15:42:36
回答 2查看 97关注 0票数 1

我已经创建了一个脚本,它将检查您提供的用户是否登录,如果登录,则显示会话的持续时间。我现在需要做的是,如果在发出命令时没有提供参数(用户名),那么请求一个参数,并获得与您提供的参数相同的结果。

以下是我所拥有的:

代码语言:javascript
复制
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

我以前试过一次,但结果并不理想,所以我把它从混乱中删除了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-30 16:02:24

代码语言:javascript
复制
if [[ $# -eq 0 ]]
then
    read -p "Enter Name: " username
else
    username=$1
fi

然后将所有对$1的后续引用替换为$username

票数 3
EN

Stack Overflow用户

发布于 2014-04-30 16:04:12

如果没有指定名称,也可以中止。

代码语言:javascript
复制
# : does nothing it just forces the evaluation
: ${1:?"Need to provide name to script"}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23392473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档