質問

自分の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のときは0を返し、0が返されます。

誰にも[[ ! `…` ]]の中にそのコマンドを入れる理由を説明することができます。

(アーチ上の実行)

役に立ちましたか?

解決

問題は、xsetの戻りコードをまったくテストしていないということです。出力を/dev/nullにリダイレクトすると、バックトック内の式は何も返しません。

while [[ ! '' ]] ...
.

これは常にwhile本体を実行します。

あなたがしているべきものは:

while ! xset q > /dev/null 2>&1 
do 
  ...
done
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top