2017-11-15 8 views
0

私はyad GUI zenity forkで選択された各オプションに対して異なる応答を実行するためにifステートメントを使用しています。if文が動作しない(bash - zenity)のはなぜですか?

何らかの理由でif文がいくつかのオプションで動作し、他のものでは動作しません!

注:私は例の'ため'^'を代入しています

opt=^yad --list --column="Option" --column="Description" \ 
    1 "option 1" \ 
    2 "option 2 
     <i> subtext </i>" \ 
    | cut -c 1^ 
echo $opt 
if [[ $opt == 1 ]] 
then 
    echo 1 
elif [[ $opt == 2 ]] 
then 
    echo 2 
else 
    echo error 

オプション1を与える:1 1

オプション2は与える:2 errorを。

echo $opt出力で明らかなように、変数が記録されています。私はそれがsubtextと関係があることを知っています、もし私がそれを消してしまうと、問題はなくなりますが、なぜ私は分かりませんか?

誰でも私に修正を手伝ったり、回避策を提案することはできますか?

ご協力いただきありがとうございます。この問題は本当に私を困惑させています。

+0

あなたは-eqを試しましたか?もし[[$ opt-eq 1]] –

+0

@ abhishekphukanうわー!それは完全に働いた、私は違いが文字列対整数だと思います。ありがとう、あなたは本当に私の一日を作った! – Linuxrox

答えて

0

答えはabhishek phukanです!

==を使用すると、シェルは変数を文字列として扱いたいと考えていましたが、通常は整数演算には-eqがよく使用され、この場合にはうまく機能します。なぜサブテキストが私にはわからない答えに影響したのですか?

+0

うれしかったです。ハッピースクリプティング:) –

関連する問題