Вы наверное знаете, что мы можем задавать переменные внутри скриптов оболочки, чтобы обойтись без так называемого hard coding. Ниже — размерем как мы можем задавать значения для этих переменных.
Определение переменных в скрипте: назначение предопределенных значений переменным внутри скрипта.
Перед запуском скрипта: используются параметры задающие значения для переменных перед каждым запуском скрипта.
Во время работы скрипта: мы можем получить доступ к переменным прямо во время работы скрипта.
Все это решает разные задачи, когда требуется присвоить значения переменным. Команда чтения полезна для назначения переменных во время выполнения скрипта.
read VARIABLE_NAME
для доступа к переменной указанной выше используется “$” или команда echo — если вы хотите вывести значение этой переменной.
echo "My variable is $VARIABLE_NAME"
Пример 1: Чтение значения введенного пользователем. Для отображения этого значения используется echo, как уже было сказано ранее.
read VAR1 echo $VAR1
Вывод:
mirivlad@mirivlad:~⟫ read VAR1 mirivlad mirivlad@mirivlad:~⟫ echo $VAR1 mirivlad
Пример 2: Команда read может читать одно, два, и т.д. значений за раз.
read VAR1 VAR2
Вывод:
mirivlad@mirivlad:~⟫ read VAR1 VAR2 linux tux mirivlad@mirivlad:~⟫ echo $VAR1 linux mirivlad@mirivlad:~⟫ echo $VAR2 tux
Пример 3: Мы можем использовать команду read для чтения элементов из массива. Убедитесь что отделили каждый элемент пробелом. По умолчанию в оболочке используются пробелы для разделения элементов массива.
read ELEMENTS1 ARR1=($ELEMENTS1)
Для вывода первого элемента массива делаем так:
echo ${ARR1[0]} Вывод:
mirivlad@mirivlad:~⟫ read ELEMENTS1
linux tux debian
mirivlad@mirivlad:~⟫ ARR1=($ELEMENTS1)
mirivlad@mirivlad:~⟫ echo ${ARR1[0]}
linux
mirivlad@mirivlad:~⟫ echo ${ARR1[1]}
tux
mirivlad@mirivlad:~⟫ echo ${ARR1[2]}
debian Пример 4: Мы можем прочесть множество значений из команды
read VAR1 VAR2 VAR3 << ( echo linux tux debian) echo "Enter values are $VAR1 $VAR2 $VAR3"
Пример 5: До этого момента мы увидели только ввод некоторых данных для данной переменной. Но при вводе данных мы можем предоставить некоторые значимые подсказки для пользователя. Этого можно добиться с помощью команд echo и read
Пример:
echo "Please enter your name" read NAME1
Вывод:
mirivlad@mirivlad:~⟫ echo "Please enter your name: " Please enter your name: mirivlad@mirivlad:~⟫ read NAME1 mirivlad mirivlad@mirivlad:~⟫ echo $NAME1 mirivlad
Пример 6: Мы можем активировать echo и читать команду из приведенного выше примера с опцией -p для чтения. Этот параметр печатает полезное сообщение для пользователя.
mirivlad@mirivlad:~⟫ read -p "Please enter your name: " NAME1 Please enter your name: mirivlad mirivlad@mirivlad:~⟫ echo "My name is $NAME1" My name is mirivlad
Еще несколько примеров использования опции -p
Вывод:
mirivlad@mirivlad:~⟫ read -p "Please enter your name: " NAME1
Please enter your name: mirivlad
mirivlad@mirivlad:~⟫ echo "My name is $NAME1"
My name is mirivlad
mirivlad@mirivlad:~⟫ read -p "Give your first and last names: " FNAME1 LNAME1
Give your first and last names: mirivlad mirv
mirivlad@mirivlad:~⟫ echo "My first name is $FNAME1, and my last name is $LNAME1"
My first name ismirivlad, and my last name is mirv
mirivlad@mirivlad:~⟫ read -p "Give your first, middle and the last names: " NAME1
Give your first, middle and the last names: mirivlad Vladimir mirv
mirivlad@mirivlad:~⟫ ANAME1=($NAME1)
mirivlad@mirivlad:~⟫ echo "My first name is ${ANAME1[0]}, middle name is ${ANAME1[1]}, and last name is ${ANAME1[2]}"
My first name is mirivlad, middle name is Vladimir, and last name is mirv Пример 7: У read есть встроенная переменная называемая REPLY. Это системная переменная которая хранит значение в $REPLY.
read -p "Please enter a value." echo "Enter value is $REPLY"
Пример 8: Как получить некоторое значение не отображая вывод в терминале? Используйте -s которое подавляет вывод echo.
read -ps "Please enter the password: " PASS
Вывод:
Please enter the password:
Восстановить доступ к странице ВКонтакте можно относительно просто. И для этого даже не потребуется помощь…
Реверс инжиниринг электроники и программного обеспечения — увлекательная и важная дисциплина, играющая ключевую роль в…
Рынок смартфонов не стоит на месте и каждый год пополняется новыми моделями. Компания Apple традиционно…
Запуск онлайн-бизнеса может показаться сложной задачей, но на самом деле этот процесс можно существенно упростить,…
Если Вы хотите продвинуть свой сайт в поисковых системах, одним из самых важных аспектов является…
Корейская компания Samsung зарекомендовала себя на потребительском рынке как производитель флагманов, так и бюджетных смартфонов.…