2016-08-29 8 views
0

以下のスクリプトは、Xサーバの開いているウィンドウのインスタンスをチェックし、状態に応じて端末に情報を表示します。私は1つのラインterminalコマンドにこれを書き換えるしようとするとスクリプトと1つのコマンドラインのIF文

#!/bin/bash 
if [[ -z $(xwininfo -tree -root | grep whatsapp | grep chromium) ]] 
then 
     echo "IT DOES NOT EXIST"; 
else 
     echo "IT EXIST"; 
fi 

私はこのようにそれを行う:

if -z $(xwininfo -tree -root | grep whatsapp | grep chromium); then echo "IT DOES NOT EXIST"; else echo "IT EXIST"; fi 

これはエラーと間違った状態を返します...

bash: -z: command not found 
IT EXISTS 

ん誰にもアドバイスはありますか?私はShellCheckを尋ねてみましたが、それは私が[[]]が必要とされていないと述べたオンラインのbashコードチェッカーでめちゃめちゃしまった

+3

なぜなら、 '[['と ']]'をすべて一行に置いてしまうのですか? – larsks

+0

その愚かなWebアプリケーションはそれが大丈夫だと言ったので。それを試してみましょう:D今度は括弧を追加したので動作しています...ありがとう。 =) – 71GA

+0

あるいは単に 'test -z ...'を使ってください。 –

答えて

0

...私は順番にすべてを持っていると言います。これが私の仕事:

正しく http://shellcheck.net/からアドバイスを次
if [[ -z $(xwininfo -tree -root | grep whatsapp | grep chromium) ]]; then chromium --app=\\"https://web.whatsapp.com/\\"; fi & if [[ -z $(xwininfo -tree -root | grep skype | grep chromium) ]]; then chromium --app=\\"https://web.skype.com/en/\\"; fi & if [[ -z $(xwininfo -tree -root | grep Viber) ]]; then viber; fi 
+0

'chromium --app =" ... "'コマンドを使用するときに引用符をエスケープするには、 '\\" 'のようなバックスラッシュが必要であることに注意してください。 – 71GA

1

は次のように見えただろう:

if xwininfo -tree -root | grep whatsapp | grep -q chromium; then 
    echo "IT DOES NOT EXIST"; 
else 
    echo "IT EXIST"; 
fi 

を...ので、ワンライナーの形で:

if xwininfo -tree -root | grep whatsapp | grep -q chromium; then echo "IT DOES NOT EXIST"; else echo "IT EXIST"; fi 

受信したシェルチェックの警告であるSC2143のwikiページを参照してください。

関連する問題