如何使用空格

时间:2017-04-02 10:35:09

标签: bash

我试图在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

它可以正常工作,但是可以用更少的命令来实现相同的结果吗?

2 个答案:

答案 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}}