我试图在bash脚本中获取su
之后的用户名。我使用了以下代码:
user=`who am i`
#user <- "user4035 pts/0 2017-04-02 05:13 (my-hostname)"
userarray=($user)
#userarray <- ["user4035", "pts/0", "2017-04-02 05:13", "(my-hostname)"]
user=${userarray[0]}
#outputs "user4035"
echo $user
它可以正常工作,但是可以用更少的命令来实现相同的结果吗?
答案 0 :(得分:4)
使用bash
parameter-expnasion 而无需使用数组,
myUser=$(who am i)
printf "%s\n" "${myUser%% *}"
user4035
(或)只使用简单的awk
命令
who am i | awk '{print $1}'
user4035
即。在变量do中,
myUser=$(who am i | awk '{print $1}')
printf "%s\n" "$myUser"
(或)如果您的脚本以sudo
优先级运行,则可以使用此bash
环境变量,
printf "%s\n" "${SUDO_USER}"
答案 1 :(得分:2)
你可以通过在一行上创建数组来删除一行命令,但是不值得做更多的事情,因为至少你只使用shell内置函数,而不是分支任何其他命令:
{{1}}