在 BashScript 中分配给变量

在 BashScript 中分配给变量

此命令从日志中获取所有用户。效果很好

grep $srcIP $cFilename | grep "Username: " | awk -F"Username: " '{print $2}'| awk -F"," '{print $1}' | sort -u

所以它会显示

user1 user2 user3 user4 etc...

我将其分配给一个变量,到目前为止一切顺利

getUser=$(grep $srcIP $cFilename | grep "Username: " | awk -F"Username: " '{print $2}'| awk -F"," '{print $1}' | sort -u)

如果我想显示第二个用户

echo $getUser | awk '{print $2}'

它将显示
user2

但是如果我将该命令分配给一个变量

tmp=$($getUser | awk '{print $2}')

现在,我收到一条错误消息
用户2:未找到命令

有人知道如何将此命令语句分配给变量吗?

$getUser | awk '{print $2}'

答案1

这是您的问题。

tmp=$($getUser | awk '{print $2}')

让我们分解一下。$(...) 将执行里面的代码。

接下来是“$getUser”,因此它将输出(在本例中)“User2”。

因此,当 $(...) 运行时,它会寻找名为“User2”的命令。这时,您会遇到错误“User2:未找到命令”。

您需要做的是打印出 $getUser,在前面添加“echo”,这样“$(...)”将执行“echo”而不是尝试运行名为“User2”的命令。

tmp=$(echo $getUser | awk '{print $2}')

相关内容