初学者的Bash Scripting:"Unary Operator Expected"错误&&如何使用grep从命令的输出中搜索变量?



我正在尝试编写一个通过"./filename username"执行的bash脚本,并检查该用户是否已登录,打印结果。我仍然不熟悉脚本,并且难以理解如何完成这项工作。

我目前收到错误"第 7 行:[:ambonill:预期的一元运算符"。这是什么意思,我该如何修复该错误?

此外,我如何让 grep 工作而不是排序 | uniq?我想从命令输出中对变量进行 grep,但在手册页中找不到任何相关内容。

#! /bin/bash
# This script will take a username as an argument and determine whether they are logged on.
function loggedin {
   for u in `who | cut -f1 -d" " | sort | uniq`
   do
   if [ $u == $1 ]
   then
      echo "$1 is logged on"
   else
      echo "$1 is not logged on"
   fi
   exit 0
   done
}
loggedin $u
exit 1

尝试找到一个更简单的解决方案,例如:

#!/bin/bash
echo "$1 is $([ -z "$(w -h $1)" ]&&echo -n not )logged on"

最新更新