此命令从日志中获取所有用户。效果很好
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}')