我试图su在bash脚本中获取用户名。我使用以下代码:
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
Run Code Online (Sandbox Code Playgroud)
它可以正常工作,但是用更少的命令就能达到相同的结果吗?
Tom*_*mas 11
另一个简单的解决方案是cut使用自定义分隔符:
user=$(who am I | cut -d ' ' -f1)
echo $user
Run Code Online (Sandbox Code Playgroud)
您可以通过在一行上创建数组来删除一行命令,但不值得做更多的事情,因为至少您只使用 shell 内置命令,而不派生任何其他命令:
who=(`who am i`)
user=${who[0]}
Run Code Online (Sandbox Code Playgroud)
使用bash 参数扩展而不需要使用数组,
myUser=$(who am i)
printf "%s\n" "${myUser%% *}"
user4035
Run Code Online (Sandbox Code Playgroud)
(或)只使用一个简单的awk命令,
who am i | awk '{print $1}'
user4035
Run Code Online (Sandbox Code Playgroud)
即在变量中,
myUser=$(who am i | awk '{print $1}')
printf "%s\n" "$myUser"
Run Code Online (Sandbox Code Playgroud)
(或)如果您的脚本带有sudo特权运行,则可以使用此bash环境变量,
printf "%s\n" "${SUDO_USER}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3163 次 |
| 最近记录: |