Linux

Руководство для начинающих по BASH — входные параметры

Linux базовый скрипт Bash с параметрами

Добро пожаловать во 2-ю часть Руководства для начинающих по BASH, которое уникально тем, что это единственное руководство по BASH, написанное новичком для начинающих.

Читатели этого руководства будут накапливать свои знания, и, надеюсь, к концу смогут написать несколько довольно умных сценариев.

В прошлый раз мы рассмотрели создание вашего первого скрипта, который просто отображал слова «Hello World». Он охватывает такие темы, как текстовые редакторы, как открыть окно терминала, куда поместить ваши сценарии, как отобразить слова «Hello World» и некоторые более тонкие точки на escape-символах, таких как кавычки («»).

В этом разделе рассматриваются входные параметры. Есть другие руководства, которые учат этому, но слишком часто, они прыгают в некоторые довольно низкоуровневые вещи и, возможно, предоставляют слишком много информации.

Что такое параметр?

В сценарии «Hello World» из предыдущего урока все было очень статично. Сценарий на самом деле ничего не делал.

Как мы могли бы улучшить сценарий «Hello World»?

Как насчет сценария, который приветствует человека, который его запускает? Вместо того, чтобы сказать «Hello World», он скажет «Hello Gary», «Hello Tim» или «Hello Dolly». 

Без возможности принимать входные параметры нам нужно написать три сценария «hellogary.sh», «hellotim.sh» и «hellodolly.sh».

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

CD скрипты

Создайте новый скрипт с именем greetme.sh, набрав следующее: ( о команде touch )

коснитесь greetme.sh

Откройте скрипт в вашем любимом редакторе, набрав следующее: ( about nano command )

нано greetme.sh

Введите следующий текст в нано:

#! / bin / bash 
echo "привет $ @"

Нажмите клавиши CTRL и O, чтобы сохранить файл, а затем клавиши CTRL и X, чтобы закрыть файл.

Linux базовый скрипт Bash с параметрами

Для запуска скрипта введите в командной строке следующее, заменив своим именем.

sh greetme.sh Тим

Если я запускаю скрипт со своим именем, он отображает слова «Привет, Гари».

Linux запускает базовый скрипт с параметрами

Первая строка имеет строку #! / Bin / bash, которая используется для идентификации файла как скрипта bash.

Вторая строка использует выражение echo для вывода слова hello, а затем появляется странная запись $ @. ( о эхо-команде )

$ @ Раскрывается для отображения каждого параметра, который был введен вместе с именем скрипта. Поэтому, если вы наберете «sh greetme.sh tim», на экране появятся слова «hello tim». Если вы наберете «greetme.sh Тим Смит», то будут отображены слова «Привет, Тим Смит».

Для сценария greetme.sh может быть полезно просто сказать привет, используя только имя. Никто не говорит «Привет Гэри Ньюэлл», когда они встречают кого-то, но они могут сказать «Привет Гэри», хотя.

Давайте изменим скрипт так, чтобы он просто использовал первый параметр. Откройте скрипт greetme.sh в nano, набрав следующее:

нано greetme.sh

Измените сценарий так, чтобы он читался следующим образом:

#! / bin / bash 
echo "привет $ 1"

Сохраните скрипт, нажав клавиши CTRL и O, а затем выйдите, нажав клавиши CTRL и X.

Linux Bash скрипт с индивидуальным параметром

Запустите скрипт, как показано ниже (замените имя на ваше):

sh greetme.sh Гэри Ньюэлл

Когда вы запустите скрипт, он просто скажет: «Привет, Гэри» (или, надеюсь, «привет» и как там тебя зовут).

Linux запускает скрипт Bash с одним параметром

1 после символа $ в основном говорит команде echo, используйте первый параметр. Если вы замените $ 1 на $ 2, тогда будет отображаться «привет newell» (или какова бы ни была ваша фамилия). Вы также можете добавить $ 2 после $ 1, чтобы получить полное имя.

Linux Bash скрипт с несколькими параметрами

Запуск с более чем одним параметром будет отображать их в местах, соответствующих порядку их ввода.

Linux запускает скрипт с несколькими параметрами

Между прочим, если вы заменили $ 2 на $ 3 и запустили скрипт всего с двумя параметрами, результат будет просто «Привет».

Можно отобразить и обработать количество фактически введенных параметров, и в следующих руководствах будет показано, как использовать количество параметров в целях проверки.

Чтобы отобразить количество введенных параметров, откройте сценарий greetme.sh (nano greetme.sh) и измените текст следующим образом:

#! / bin / bash 
echo "вы ввели $ # names"
echo "hello $ @"

Нажмите CTRL и O, чтобы сохранить скрипт, а также CTRL и X, чтобы выйти из nano.

Параметры подсчета сценария Linux Bash

$ # Во второй строке отображает количество введенных параметров.

Пока что все это было новым, но не очень полезным. Кому нужен скрипт, который просто отображает «привет»? 

Linux запускает скрипт подсчета параметров bash

Реальное использование для эхо-операторов — предоставить подробный и значимый вывод пользователю. Если вы можете вообразить, что вы хотите сделать что-то сложное, что включает в себя серьезное сокращение чисел и манипулирование файлами / папками, было бы полезно показать пользователю, что происходит на каждом этапе пути.

Напротив, входные параметры делают ваш скрипт интерактивным. Без входных параметров вам понадобятся десятки скриптов, все они делают очень похожие вещи, но с немного разными именами.

Имея все это в виду, есть некоторые другие полезные входные параметры, которые стоит знать, и я включу их все в один фрагмент кода.

Откройте скрипт greetme.sh и измените его следующим образом:

#! / bin / bash 
echo "Имя файла: $ 0"
echo "Идентификатор процесса: $$"
echo "---------------------------- --- "
echo" вы ввели $ # names "
echo" hello $ @ "

Нажмите CTRL и O, чтобы сохранить файл, и CTRL и X, чтобы выйти.

Linux Bash скрипт дополнительная информация

Теперь запустите скрипт (замените его на свое имя).

sh greetme.sh 

На этот раз скрипт отображает следующее:

Имя файла: greetme.sh Идентификатор 
процесса : 18595
------------------------------
Вы ввели 2 имени,
привет Гэри Ньюэлл
Скрипт запуска Linux Bash с дополнительной информацией

$ 0 в первой строке скрипта отображает имя скрипта, который вы запускаете. Обратите внимание, что это ноль доллара, а не доллар o.

$$ во второй строке отображает идентификатор процесса запускаемого вами сценария. Почему это полезно? Если вы используете скрипт на переднем плане, вы можете отменить его, просто нажав CTRL и C . Если вы запустили скрипт в фоновом режиме, и он начал зацикливаться и снова и снова повторять одно и то же или начал наносить ущерб вашей системе, вам нужно было бы его убить.

Чтобы убить скрипт, работающий в фоновом режиме, вам нужен идентификатор процесса скрипта. Разве не было бы хорошо, если бы скрипт давал идентификатор процесса как часть его вывода? ( о командах ps и kill )

Наконец, прежде чем мы закончим с этой темой, важно обсудить, куда идет вывод. Каждый раз, когда скрипт до сих пор выполнялся, вывод выводился на экран.

Обычно вывод сценария записывается в выходной файл. Для этого запустите ваш скрипт следующим образом:

sh greetme.sh gary> greetme.log

Символ> в приведенной выше команде выводит текст «привет, gary» в файл с именем greetme.log.

Каждый раз, когда вы запускаете скрипт с символом>, он перезаписывает содержимое выходного файла. Если вы хотите добавить файл, замените> на >>.

Похожие посты
Linux

8 лучших окружений рабочего стола Linux

AndroidIphone и ipadLinuxWindows

Окончательное руководство по включению темного режима везде

LinuxКак сделать

Что такое Swappiness в Linux? (и как это изменить)

LinuxКак сделать

Как использовать команду ls для вывода списка файлов и каталогов в Linux