Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Запуск программы из Bash  (Прочитано 1470 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ramzayx

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Запуск программы из Bash
« : 14 Марта 2015, 20:37:34 »
Добрый вечер. Подскажите почему код не выполняется:

Задача - запустить приложение ruby скриптом.
В приложении используется gui - 'shoes' из командной строки нормально выполняется --> shoes filename.rb
Нужно чтобы в случае отсутствия 'shoes' программа предлагала скачать его из репозиториев.

#!/bin/bash


if [ -f /usr/bin/shoes ]; then    # Папка с shoes
 cd '~/Рабочий\ стол/Ruby/Shoes'  #Папка с файлом
 source shoes setup.rb            # запуск приложения
else
                                  #Если нет shoes
question() {
  while echo -n "$1 [Y/N] " && read answer || true && ! grep -e '^[YyNn]$' <<< $answer > /dev/null; do echo -n "Введите либо N либо Y! "; done
  return $(tr 'YyNn' '0011' <<< $answer)
}

question "Произвести обновление списка пакетов?" && sudo apt-get update
question "Установить пакет (для графики GUI) shoes?" && sudo apt-get install shoes

fi

До этого нормально выполнялось следующее :

Двойным щелчком открывал этот скрипт и он запускал программу

#!/bin/bash
[ -f "/usr/bin/shoes" ] && cd '~/Рабочий\ стол/Ruby/Shoes'; source shoes setup.rb || echo "Не установлен shoes"

Далее удалил shoes для проверки и он не выводит "Не установлен shoes" !!! Не понятно почему ? Подскажите почему первый вариант кода не работает и почему второй работает на половину?



Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Запуск программы из Bash
« Ответ #1 : 14 Марта 2015, 20:59:47 »
Условно разделите скрипт на две части:
[ -f "/usr/bin/shoes" ] && cd '~/Рабочий\ стол/Ruby/Shoes';
source shoes setup.rb || echo "Не установлен shoes"

они в данном случае выполняются отдельно.
source shoes setup.rb, возвращая ненулевой статус из за чего выводится echo "Не установлен shoes"

вероятно, имелось в виду:
#!/bin/bash
[ -f "/usr/bin/shoes" ] && cd '~/Рабочий\ стол/Ruby/Shoes' && source shoes setup.rb || echo "Не установлен shoes"
« Последнее редактирование: 14 Марта 2015, 21:03:06 от .ubuntufan »

Оффлайн Ramzayx

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Запуск программы из Bash
« Ответ #2 : 14 Марта 2015, 21:25:15 »
Нет, заменил ; на && . все-равно при двойном щелчке на скрипте ничего не проиходит.

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Запуск программы из Bash
« Ответ #3 : 14 Марта 2015, 21:26:26 »
А что должно происходить?

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Запуск программы из Bash
« Ответ #4 : 14 Марта 2015, 21:40:47 »
[ -f "/usr/bin/shoes" ] && cd '~/Рабочий\ стол/Ruby/Shoes'; source shoes setup.rb || { echo "Не установлен shoes";exit 1; }
Wars ~.o

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Запуск программы из Bash
« Ответ #5 : 14 Марта 2015, 21:51:05 »
victor00000, зачем ты это делаешь?

Оффлайн Ramzayx

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Запуск программы из Bash
« Ответ #6 : 14 Марта 2015, 22:16:23 »
Может быть я ошибаюсь. Но должно происходить так:

При наличае shoes - открывается файл ruby
При отсутствии - открывается окно с ошибкой.


Или как вариант подскажите как запустить такую проверку и такой запуск файла по двойному щелчку из самого файла .rb
язык интерпретируемый слышал про JRuby и IronRuby но мне кажется это убийство времени будет :)
« Последнее редактирование: 14 Марта 2015, 22:21:14 от Ramzayx »

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Запуск программы из Bash
« Ответ #7 : 14 Марта 2015, 22:22:37 »
Разве echo открывает окно с ошибкой?

#!/bin/bash
[ -f "/usr/bin/shoes" ] && cd '~/Рабочий\ стол/Ruby/Shoes' && source shoes setup.rb || zenity --error --text="Не установлен shoes"

Алсо, ты уверен что source - именно то что тебе нужно?

man bash

Оффлайн Ramzayx

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Запуск программы из Bash
« Ответ #8 : 14 Марта 2015, 23:24:56 »
Какой большой мануал )) Ну с source программа запустилась.
Ваш вариант работает.
А что Вы предлагаете вместо source ?

И еще подскажите почему условие else не выполняется в первом коде ?

 

Страница сгенерирована за 0.029 секунд. Запросов: 25.