0

誰かが display を使用しているかどうかを確認する簡単なシェル スクリプトを作成するにはどうすればよい:0ですか? これは動作しません:

if [ 'who | grep " :0 "' != "" ]
then
    echo "hi"
fi
4

3 に答える 3

2

他の回答のいくつかは機能しますが、grep の終了ステータスは成功または失敗を示すため、文字列比較のために ($() または backtics を使用して) grep の出力をキャプチャする必要はありません。したがって、これを次のように減らすことができます。

if who | grep -q ' :0 '; then
    echo hi
fi

またはさらに簡単です:

who | grep -q ' :0 ' && echo hi

ノート:

  • 「if」は、コマンドまたはコマンドのパイプラインで動作します。

  • 左角括弧は実際にはコマンドであり、'test' の別名です。

  • q オプションは grep の出力を抑制します (ほとんどのバージョンで)。

  • who、grep、および test を呼び出す代わりに、who と grep を呼び出すことができます。

  • 別の回答が指摘したように、システムによっては「:0」以外のものをgrepする必要がある場合があります。

于 2010-05-27T21:41:56.960 に答える
0
if who | grep " :0 "
then
    echo "hi"
fi

who の出力は、 whoのバージョンによって異なることに注意してください。grep ":0"の代わりにgrep '(:0'が必要なの GNU coreutils 7.4 バージョンの場合

于 2010-05-26T14:42:22.697 に答える
0
#!/bin/sh
R=$(who | grep " :0 ")
echo $R
if [ "$R" != "" ]; then
    echo "hi"
fi
于 2010-05-26T14:33:43.357 に答える