bash - 如何获取用空格分隔的字符串的第一个元素

标签 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

它工作正常,但是否可以用更少的命令获得相同的结果?

最佳答案

使用 bash parameter-expansion 而无需使用数组,

myUser=$(who am i)
printf "%s\n" "${myUser%% *}"
user4035

(或)只使用一个简单的 awk 命令,

who am i | awk '{print $1}'
user4035

即在一个变量中做,

myUser=$(who am i | awk '{print $1}')
printf "%s\n" "$myUser"

(或者)如果您的脚本以 sudo 权限运行,您可以使用此 bash 环境变量,

printf "%s\n" "${SUDO_USER}"

关于bash - 如何获取用空格分隔的字符串的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43167317/

相关文章:

bash - sqlplus/nolog 输出 --help 和退出`

bash - 陷入在 bash 中动态分配关联数组的困境

linux - 网络脚本不起作用。 CentOS 2.6

python - 在远程机器上运行(python/bash)项目

bash - 拆分大型 csv 文件并在每个部分保留标题

arrays - 我如何在 bash 中通过它的名称索引一个数组

macos - 使用 Sed Mac 终端查找并替换为空格

linux - Unix shell 目录历史

bash - 从 npm 命令执行 ssh shell 脚本

python - 使用Shell脚本在python Shell中运行命令的意外行为