Строка с grep
команда делает exit 0
если "строка" будет во входе, то иначе код выхода будет 1. Более явный путь был бы:
grep -q "string"
if [ $? -eq 0 ]
then
exit 0
else
exit 1
fi
Другой подход должен записать Вашу функциональность как библиотеку. Затем у Вас есть GUI, который пользуется библиотекой; и CLI, который также пользуется библиотекой. В зависимости от сложности Вашей задачи, которая может быть лучшим решением, поскольку обе программы могли работать независимо без потребности любого, отчасти предают коммуникацию процесса земле.
Если осуществление программы является относительно не сохраняющим состояние, или это не является интерактивным, или это обычно просто работает к завершению, то первая опция является самой легкой и самой соответствующей.
Если программа с сохранением информации, или длительна, то вторая опция является самой соответствующей, хотя более сложный.
Думайте о FTP: использование curl
или wget
написать сценарий загрузки по сравнению с использованием expect
для сценариев интерактивного сеанса FTP в каждом случае не могло бы быть корректного ответа.
Интересные случаи исследования включают:
nmap
может обеспечить весь ее сложный полезный вывод в XML, с обратной связью во время сканирования, после того как это запустило Вас, просто должны расслабиться и ожидатьgpg
поскольку CLI имеет долгую историю интеграции с почтовыми клиентами GUI, это использует дескрипторы файлов для ввода и выводаxmlclitools
имеет интересный двухмодовый режим, автономный и клиент-серверныйКакой язык Вы планируете использовать для GUI? Предположение C/C++ на основе system()
звонить. Вы могли также использовать os.exec Python* () или os.system () функции или подобные функции на многих других языках включая просто другой сценарий оболочки, который называет Zenity, Yad или GTKDialog для взаимодействий GUI.
Использование системы C/C++ () функция имеет много протестов. Так как большинство других языковых компиляторов и интерпретаторов записаны в C/C++, их эквивалентные функции/методы обычно имеют те же проблемы. Используйте с осторожностью.
Сообщество Linux Щенка делает широкое применение GTKDialog названным из сценариев оболочки удара, так как оно поддерживает большую часть всего обычного GTK + виджеты GUI. Подобный XML код GTKDialog встроен в export
строка сценария оболочки редактора, которая передается в вызове gtkdialog
исполняемый файл. Таким образом весь код остается в том же файле.
Yad является ветвлением Zenity, который умножает GTK Zenity + возможности GUI существенно и является моим текущим предпочтительным инструментом.
Общий подход GTKDialog, Zenity и Yad...
Интерактивный GUI и функциональный код могли также быть в том же сценарии, с параметром командной строки для выбора GUI, CLI или API (неинтерактивного) при желании. Еще лучше было бы внутреннее обнаружение на запуске вида среды с автовыбором соответствующего интерфейса.