Bash:超出表达式递归级别(错误标记是...)

Ped*_*dro 3 unix linux bash shell

我正在编写一个程序来打印用户名和用户登录的次数,否则打印“未知用户”。

我的代码如下:

iden=$1
c='last | grep -w -c $iden'
if (( $c > 1 ))
then
    echo "$iden $c"
else
    echo "Unknown user"
fi
Run Code Online (Sandbox Code Playgroud)

我不断收到此错误:

-bash: ((: last | grep -w -c 123: 超出表达式递归级别(错误标记为“c 123”)

fed*_*qui 5

要将命令的输出存储在变量中,您需要说var=$(command). 因此,使用:

c=$(last | grep -w -c "$iden")  # always good to quote the variables
Run Code Online (Sandbox Code Playgroud)

代替

c='last | grep -w -c $iden'
Run Code Online (Sandbox Code Playgroud)

如果您正在学习 Bash 脚本,将您的代码粘贴到ShellCheck 中以查看您可能遇到的问题总是很方便的。