独自の x セッションで xfce と xbmc を起動するスクリプトを作成しようとしています。
これを行うために、値を設定しDISPLAY
、最初の値をバックグラウンドで実行して、からの戻り値が成功するまで待ちxset q
ます。それから私は変更DISPLAY
し、他の人にも同じことをします。
私はこれを少しずつ書いて、各部分の構文が正しいことを確認しています。私が行き詰まっている部分は、「xset q
.
export DISPLAY=":0.0"
while [[ ! `xset q` ]]
do
echo -n "."
done
このコードは機能しているように見えるので、XFCE が実行されているときはすぐに終了し、実行されていないときはそこに座って印刷します.xset: unable to open display ":0.0"
ただし、の出力を見たくないxset
ので、その出力をリダイレクトしようとしています。
export DISPLAY=":0.0"
while [[ ! `xset q > /dev/null 2>&1` ]]
do
echo -n "."
done
ただし、このリダイレクトを追加すると検出が中断されるようで、XFCE が実行されているかどうかに関係なく、ドットを印刷するだけです。
2 つのコマンドを単独でテストし、シェル スクリプトを単独でテストしたところ、どちらも期待どおりに動作し、XFCE が実行されていない場合は 1 が返され、実行されている場合は 0 が返されます。
そのコマンドをテストの中に入れるとなぜテストが[[ ! `…` ]]
中断されるのか、そしてこのループを正しくwhile
書き直す方法を誰かが説明できますか?while
(Arch で実行)