Аргументы скрипта

Последнее обновление: 23.03.2024

При запуске скрипта ему можно передать некоторые аргументы из командной строки. Внутри скрипта эти аргументы доступны через номера аргументов. Например, первый аргмуент доступен через $1, второй аргумент через - $2 и так далее. Также есть специальный идентификатор - $0, который всегда хранит имя скрипта.

Например, определим следующий скрипт hello:

#!/bin/bash
echo $0
exit 0

В данном случае выводим на консоль имя скрипта. Запустим скрипт:

eugene@Eugene:~$ bash hello
hello
eugene@Eugene:~$ 

Теперь передадим в скрипт аргумент и используем его. Для этого изменим скрипт следующим образом:

#!/bin/bash
# скрипт принимает аргумент и выводит его на консоль
echo $1
exit 0

В данном случае мы выводим самый первый аргумент на консоль с помощью идентификатора $1. Запустим скрипт, передав ему аргумент:

eugene@Eugene:~$ bash hello Tom
Tom
eugene@Eugene:~$ 

Аргументы указываются после имени скрипта через пробел. В частности, здесь передается только один аргумент - "Tom". Если надо передать в качестве аргумента строку, где слова разделены пробелами, то такая строка оборачивается в кавычки:

eugene@Eugene:~$ bash hello "Hello METANIT.COM"
Hello METANIT.COM
eugene@Eugene:~$ 

Подобным образом можно передать и большее количество аргументов. Например:

#!/bin/bash
# скрипт принимает аргументы и выводит их на консоль
ARG1=$1
ARG2=$2
ARG3=$3
SCRIPTNAME=$0
echo The name of this script is $SCRIPTNAME
echo The first argument is $ARG1
echo The second argument is $ARG2
echo The third argument is $ARG3
exit 0

В данном случае передаем три аргумента. Протестируем скрипт:

eugene@Eugene:~$ bash hello Tom 39 tom@mimimail.com
The name of this script is hello
The first argument is Tom
The second argument is 39
The third argument is tom@mimimail.com
eugene@Eugene:~$ 

Специальные идентификаторы

Кроме $0 внутри скрипта можно использовать еще ряд специальных идентификаторов:

  • $#: число аргументов

  • $@ и $*: строка с аргументами

Используем данные идентификаторы в скрипте:

#!/bin/bash

echo the number of arguments is $#
echo the arguments are $@
echo the arguments are $*
exit 0

Вызовем скрипт:

eugene@Eugene:~$ bash hello a b c
the number of arguments is 3
the arguments are a b c
the arguments are a b c
eugene@Eugene:~$ 
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850