こんにちは、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にリダイレクトするのと同じ結果を得るためのより良い方法です。