
Введение:
Скрипт — это тип программы, состоящий из последовательности инструкций, написанных на языке сценариев или языке программирования. В отличие от скомпилированных программ, которые транслируются в машинный код, который может непосредственно выполняться процессором компьютера, сценарии интерпретируются или выполняются другой программой, называемой интерпретатором.
В системном администрировании и автоматизации обычно используются языки сценариев оболочки. Наиболее часто используются Bash и PowerShell. Конечно, скрипты используются в играх, веб-разработке на стороне сервера и т. д.
Скрипт в проекте Flutter:
В этом примере я объясню, как я использую скрипт, чтобы помочь мне генерировать код в моем проекте. В моем проекте мне нужен пакет json_serializable. Во Flutter пакет json_serializable, доступный на pub.dev, используется для упрощения процесса сериализации и десериализации объектов Dart в формат JSON (нотация объектов JavaScript) и из него.
Пакет json_serializable генерирует код сериализации и десериализации для ваших классов Dart на основе аннотаций, которые вы добавляете к этим классам. Это значительно сокращает ручную работу, необходимую для преобразования между объектами Dart и JSON.
Я создал сценарий оболочки, который ищет по имени все файлы, которые заканчиваются расширением .g .dart, и удаляет их, а затем вызывает flutter clean && flutter pub get и генерирует новый .g. файлы.

Если мы попытаемся запустить cleanAndRebuild.sh в нашем терминале, мы получим сообщение, что команда не найдена.

Чтобы решить эту проблему, мы должны добавить ./ перед именем скрипта:
- Если вы наберете
cleanAndRebuild.sh, терминал будет искать его в каталогах, указанных в переменной окружения PATH, и может не найти. - Если вы набираете
./cleanAndRebuild.sh, вы говорите терминалу искать скрипт в текущем каталоге, обозначенном./.
Таким образом, использование ./ перед именем сценария явно указывает, что вы хотите запустить сценарий, расположенный в текущем каталоге.
Но при попытке снова запустить этот скрипт мы столкнемся с проблемой.

Получаем отказ в разрешении. Чтобы решить эту проблему, мы должны добавить несколько дополнительных строк. Перед cleanAndRebuild.sh мы должны добавить:
chmod: означает «режим изменения» и используется для изменения прав доступа к файлам и каталогам.+x: Этот флаг добавляет разрешение на выполнение для указанного файла.
Кроме того, есть и другие разрешения:
+r: Этот флаг добавляет разрешение на чтение к указанному файлу.+w: Этот флаг добавляет разрешение на запись в указанный файл.
После того, как мы запустим chmod +x cleanAndRebuild.sh, разрешение на выполнение будет добавлено, и теперь нам просто нужно запустить снова cleanAndRebuild.sh

Теперь скрипт успешно работает и генерирует код. Этот пример показывает, что процесс работы со сценариями может включать несколько шагов, включая настройку разрешений, запуск сценария и получение преимуществ от выполняемых им автоматизированных задач.
Этот пример служит практической иллюстрацией концепций, которые вы ранее обсуждали в отношении сценариев, разрешений и конкретного варианта использования json_serializable в проекте Flutter.