Почему мое заявление 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
Если я сотру его, проблема исчезнет, но почему я понятия не имею.
Может кто-нибудь помочь мне исправить или предложить обходной путь?
Спасибо за всю твою помощь! Эта проблема действительно ставит меня в тупик.
1 ответ
Спасибо abhishek phukan за ответ!
Используя ==
оболочка хотела обрабатывать переменные как строку, -eq
обычно используется для целочисленных операций и работает лучше в этом случае. Почему подтекст повлиял на ответ, я не знаю.