我正在使用一本叫做《开始Linux编程》(第4版)的书从最基本的方面学习shell编程。我被这个脚本和一个until-子句搞糊涂了:

#!/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

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

最佳答案

“until”循环用于测试一个条件,如您所提到的,并将运行所有“do done”块,直到出现的条件变为真。换句话说,它只在存在的条件为false时执行代码块,并运行它直到它变为true。您正在测试的脚本对于捕获作为参数传递给脚本的登录用户非常有用(因此,grep“$1”,即位置参数$1)。它将休眠一分钟(睡眠60),直到用户登录到系统,然后它将退出循环并完成所有的“1美元刚刚登录”的东西。grep输出重定向到/dev/null用于不显示grep命令的输出(您可以使用grep-q“$1”,这将达到相同的效果)。
希望能澄清你的疑虑。

关于linux - “谁? grep $ 1”命令在shell脚本中执行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4625687/

10-16 20:19