什么是"who | grep $ 1"命令在shell脚本中做什么?

Tra*_*acy 0 unix linux shell select-until

我正在使用名为Beginning Linux Programming(第4版)的书从基础知识中学习shell编程.我对此脚本的一个until-clause 感到困惑:

#!/bin/bash

until who | grep "$1" > /dev/null
do
   sleep 60
done

# Now ring the bell and announce the unexpected user.

echo -e '\a'
echo "***** $1 has just logged in *****"

exit 0
Run Code Online (Sandbox Code Playgroud)

我怀疑who | grep "$1" > /dev/null这里用的是什么?为什么要将grep输出重定向到/dev/null

小智 5

正如您所提到的,'until'循环用于测试条件,并将运行所有'do | done'块,直到条件存在变为真.换句话说,它仅在条件存在为FALSE时执行代码块,并运行它直到它变为真.您正在测试的脚本对于捕获作为参数传递给脚本的登录用户非常有用(因此,grep"$ 1",位置参数为$ 1).它将睡眠一分钟(睡眠60),直到该用户登录系统,然后它将退出循环并执行所有'$ 1刚刚登录'的东西.将grep输出重定向到/ dev/null用于不显示grep命令的输出(您可以使用grep -q"$ 1",这将实现相同的效果).

希望澄清你的疑虑.