Сценарий командной строки

Pause

Сценарий кома́ндной стрoки, или сценарий командной оболочки (англ. shell script) — программа, выполняемая командной оболочкой операционной системы. Наиболее часто термин применяется к скриптам, написанным для Bourne shell — программной оболочки систем UNIX[3].

Общие сведения
Сценарий командной строки
MIME-тип text/x-sh[1] и application/x-sh[2]

В Unix

В Unix-подобных операционных системах нет требований к расширению имени файла, однако для скриптов командной оболочки выделено расширение .sh. Наиболее простые операции, выполняемые такими скриптами — вывод текста и базовые операции с файлами.

Для запуска скрипта необходимо ввести в эмулятор терминала с запущенным shell путь к файлу скрипта и аргументы (например, ./myscript.sh -switches—switch—file1 file2). Аргументы пишутся через пробел. Среди разработчиков скриптов существует соглашение давать пользователю возможность менять режим работы скрипта исключительно через аргументы, начинающиеся с дефиса: одинарный дефис для аргументов длиной в один символ (при этом после дефиса может быть указано сразу несколько ключей, например -abcd эквивалентно -a -b -c -d), или двойной дефис для аргументов длиной в два и более символов (например, --help, --switch-with-very-long-name). Двойной дефис, окружённый пробелами, указывает, что следующие за ним токены не являются аргументами[4]. Для упрощения следования этим соглашениям во многие UNIX-подобные системы включена программа getopt, упрощающая разбор аргументов[5]. Также обычной практикой является вывод справки при передаче аргумента --help. Ещё один способ получить справку (для стандартных скриптов) — воспользоваться утилитой man.

Пример скрипта, конвертирующего изображения формата .jpg в формат .png:

#!/bin/bash
for jpg; do # использовать $jpg для каждого имени файла по очереди
    png="${jpg%.jpg}.png"                    # получить PNG-версию имени файла .jpg с .png
    echo converting "$jpg" ...               # сообщение для пользователя
    if convert "$jpg" jpg.to.png ; then      # использовать утилиту convert для создания временного PNG-файла
        mv jpg.to.png "$png"                 # если сработало, переименовать временный PNG-файл, дав требуемое имя
    else                                     # ...иначе напечатать сообщение об ошибке
        echo 'jpg2png: ошибка: результат сохранён в "jpg.to.png".' >&2
        exit 1
    fi                                       # конец "if"
done # конец "for"
echo "Успешно преобразовано" # сообщение об успехе
exit 0

В Windows

В Windows скрипты командной строки существуют в виде пакетных файлов и записываются в файл с расширением .bat, .cmd или .btm. Компиляции или другой специальной обработки файла для его запуска не требуется: достаточно написать его код и сохранить текстовый файл как пакетный.

Ссылки

  1. ↑ https://salsa.debian.org/debian/mime-support/blob/debian/3.61/mime.types#L802
  2. ↑ https://pagure.io/mailcap/blob/07e194ff9f4d842a307ae85ccdef77b800842174/f/mime.types#_1768
  3. ↑ Kernighan, Brian W. & Pike, Rob (1984), 3. Using the Shell, The UNIX Programming Environment, Prentice Hall, Inc., с. 94, ISBN 0-13-937699-2 
  4. ↑ UNIX conventions for command line arguments Архивная копия от 22 мая 2016 на Wayback Machine (Bruce Barnett’s Bourne Shell Grymoire)
  5. ↑ Checking for optional arguments Архивная копия от 22 мая 2016 на Wayback Machine (Bruce Barnett’s Bourne Shell Grymoire)
Pause