誰かが display を使用しているかどうかを確認する簡単なシェル スクリプトを作成するにはどうすればよい:0
ですか? これは動作しません:
if [ 'who | grep " :0 "' != "" ]
then
echo "hi"
fi
他の回答のいくつかは機能しますが、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する必要がある場合があります。
if who | grep " :0 "
then
echo "hi"
fi
who の出力は、 whoのバージョンによって異なることに注意してください。grep ":0"の代わりにgrep '(:0'が必要な人の GNU coreutils 7.4 バージョンの場合
#!/bin/sh
R=$(who | grep " :0 ")
echo $R
if [ "$R" != "" ]; then
echo "hi"
fi