Почему мой оператор if не работает (bash - zenity)?

Я использую оператор if для запуска разных ответов для каждой опции, выбранной в графическом интерфейсе yad zenity fork.

По какой-то причине оператор 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

вариант 2 дает: 2 error.

Переменная записывается правильно, как видно из вывода echo $opt. Я знаю, что это как-то связано с subtext, если я сотру его, проблема исчезнет, ​​но почему я понятия не имею.

Может ли кто-нибудь помочь мне с исправлением или предложить обходной путь?

Спасибо за всю твою помощь! Эта проблема действительно ставит меня в тупик.


person Linuxrox    schedule 15.11.2017    source источник
comment
Вы пробовали -eq? если [[ $opt -eq 1 ]]   -  person abhishek phukan    schedule 15.11.2017
comment
@abhishekphukan Вау! Это полностью сработало, я думаю, разница в строке и целом числе. Большое спасибо, вы действительно сделали мой день!   -  person Linuxrox    schedule 15.11.2017


Ответы (1)


Спасибо abhishek phukan за ответ!

Используя ==, оболочка хотела обрабатывать переменные как строку, -eq обычно используется для операций с целыми числами и в этом случае работает лучше. Почему подтекст повлиял на ответ, я не знаю.

person Linuxrox    schedule 15.11.2017