bash who, grep 質問

bash who, grep 質問

こんにちは、bashに問題があります。バックグラウンドで動作する「スクリプト」が必要です。sleep 60は、ユーザー(ログインがパラメータとして追加されたもの)がサーバー上で作業していることを確認します。ユーザーがログインすると、「hello」記号が表示されます。 person オンラインサインです。 「申し訳ありません。翻訳の練習は少し難しいです。

#!/bin/sh
who | cut -d " " -f1 | grep $1> /dev/null
z=$?
until [ $z -eq 0 ] ; do
sleep 10
who | cut -d " " -f1 | grep $1> /dev/null
z=$?
done
echo "hello $1" | write $1

私は学校サーバーの代わりに私のコンピュータで実行してみました。可能ですか?これが私が返すものです:

Usage: grep [OPTION]... PATTERNS [FILE]...
Try 'grep --help' for more information.

ベストアンサー1

これは私のバージョンのスクリプトです。

#!/bin/sh
if [ $# -lt 1 ]
then echo Missing user name; exit 1
elif ! grep -q $1 /etc/passwd
then echo No such user: $1; exit 2
fi

until who | cut -d " " -f1 | grep -q $1
do sleep 10
done
echo "hello $1" | write $1

まず、有効なユーザー名が存在することを確認するチェックを追加しました。

このuntilキーワードに管路testとも呼ばれるプログラムになること[ができます。しかし、私はwho|cut|grepパイプを使っていました。終了状態が 0 の場合、ループは停止します。 0 以外の場合はループが続行されます。

別の非常にマイナーな変更が追加されました-q。私の個人的な意見では、これが/ dev / nullにリダイレクトするのと同じ結果を得るためのより良い方法です。

おすすめ記事