во многих случаях сценарии bash требуют значений аргументов для ввода в сценарий,
аргументы - это значения, указанные после имени сценария при его запуске,
например, если вы запускаете apt install nginx apt - это сценарий или имя команды
install является первым аргументом скрипт и nginx - второй аргумент скрипта,
имя скрипта и аргументы разделены пробелами, которые в этом случае известны
как внутренний разделитель полей по умолчанию, для этой цели есть некоторые предопределенные переменные,
также известные как позиционные аргументы, и будут возьмите их по одному, если вы запустите сценарий, например,
точечную косую черту script dot sh имя файла один d1 и IP-адрес, тогда ноль доллара - это имя самого сценария
, индекс sh, это не позиционный аргумент, но он полезен, когда вы хотите снова запустите
скрипт, дав ему другие входные значения, доллар один - это первый позиционный аргумент, поэтому
имя файла один доллар два - второй позиционный аргумент, поэтому d1, а третий - последний ар Элементом
скрипта является IP-адрес, если бы было больше аргументов, доллар 9 был бы 9-м
аргументом, а после доллара 9 аргументы должны быть заключены в фигурные скобки, например доллар
и 10 или 11 между фигурными скобками, тогда хеш доллара - это номер позиционные аргументы
звездочка доллара - это строковое представление всех позиционных аргументов, поэтому один доллар 2.3 и так далее,
а доллар в вопросительном знаке - это самый последний статус выхода команды переднего плана,
все эти предопределенные переменные доступны и могут использоваться внутри сценариев,
эта концепция очень важно, поэтому я только что создал следующий скрипт, чтобы вы могли точно
увидеть , что означают позиционные аргументы, это скрипт, который я только что создал, он отображает
значение каждого аргумента, я сначала выполняю скрипт без каких-либо аргументов,
и мы замечаем, что В долларе 0 хранится имя скрипта. В долларах 1 2 и 3 пусты, потому что
аргументов нет, а хэш доллара равен 0, потому что скрипт был запущен с 0 аргументами, но давайте посмотрим что
произойдет, если мы запустим его с некоторыми аргументами, так что имя скрипта и некоторые аргументы
linux windows mac, а затем первый аргумент сценария будет linux, поэтому доллар один равен linux,
второй аргумент windows хранится в долларах 2 доллара 3 будет удерживайте строковое
значение mac это доллар 4 доллара звезда или звездочка представляет собой строковое представление
всех позиционных аргументов, а долларовый хеш хранит количество аргументов, поэтому четыре
взгляните на этот пример, пока вы не поймете это глубоко, это очень важно, давайте посмотрим еще несколько
полезных Примеры я создаю новый скрипт, который принимает файл, его аргумент отображает
его содержимое, а затем создает его сжатую копию, поэтому vim отображает compressed.sh
первая строка - это shebang,
я показываю сообщение, в котором говорится, что скрипт делает это всегда хорошая идея быть подробным
и рассказать пользователю, что происходит, поэтому эхо отображает содержимое даларана,
и я приостанавливаю выполнение на две секунды, чтобы у пользователя было достаточно времени, чтобы прочитать t предыдущее
сообщение спит два, и я показываю контекст файла, поэтому первый аргумент скрипта,
который хранится в специальной переменной даларан, чтобы кот даларан помнил, что даларан - это предопределенная
переменная, которая уже существует, не нужно объявлен и содержит значение первого аргумента
echo для пустой строки, а затем echo сжимает даларан.Я сжимаю файл первый
аргумент сценария.Я сплю на две секунды, а теперь команда tar, которая
сжимает файл, поэтому tar минус czvf я собираюсь создать часть диска agz имя архива,
поэтому доллар один имя файла .tar.gz и файла dalargon я сохраняю и выхожу из файла,
устанавливая разрешение на выполнение, и я запускаю скрипт с файл в качестве аргумента, поэтому отображайте
и сжимайте точку sh, а файл является аргументом, например arguments.sx, он находится в том же каталоге
, где отображается содержимое файла, а затем сжимает файл,
посмотрите, это сжатый файл, конечно, мы можем вызвать l это с любым другим файлом в системе в качестве
аргумента, на этот раз я запускаю его как root, потому что архив будет создан в слэше tc, поэтому sudo
dot slash отображать и сжимать, а файл будет иметь слэш и т. д. пароль, я ввожу password
он отображает содержимое файла паролей, и теперь он сжимает его, это
сжатый файл, давайте перейдем ко второму примеру в предыдущей лекции, мы создали
сценарий, который запрашивает у пользователя IP-адрес и отбрасывает все пакеты, поступающие из адрес типа
это сценарий, теперь я хочу изменить сценарий, чтобы IP-адрес был указан
в качестве аргумента сценария, а не записывался пользователем. Я делаю
копию сценария, потому что я хочу сохранить существующий версия скрипта, поэтому скопируйте
блок ip.sage xa ​​drop ip.6 вы можете дать ему любое имя, которое хотите, я открываю файл и меняю его,
я удаляю эту строку и вместо этого пишу
удаление пакетов из даларана аргумент скрипта, который является ip add ress
и в команде iptables вместо dollar ip я использую dalaran,
и пакет из первого доллара будет удален из excel, и я тестирую сценарий, поэтому sudo
dot slash drop ip.sh и ip-адрес, например, 4.4.4.4 это первый
аргумент скрипта, так что dalagon давайте посмотрим, работает ли соединение с 4.4.4.4, так что ping 4.4.4.4
хорошо, он не работает я собираюсь выбрать другой IP-адрес
я пингую случайный IP-адрес вы можете выбрать любой IP-адрес, который вы хотите, чтобы
ping работал, я использую адрес типа в качестве первого аргумента скрипта
и нажимаю Enter, и ping остановил все пакеты из 100.0.0.1 отброшены
хорошо, это все на данный момент о позиционных аргументах, спасибо