Примеры чтения переменных для скриптов оболочки Linux

Компьютерное

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

Определение переменных в скрипте: назначение предопределенных значений переменным внутри скрипта.
Перед запуском скрипта: используются параметры задающие значения для переменных перед каждым запуском скрипта.
Во время работы скрипта: мы можем получить доступ к переменным прямо во время работы скрипта.

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

Изучаем команду READ на примерах

Синтаксис команды READ

read VARIABLE_NAME

для доступа к переменной указанной выше используется “$” или команда echo — если вы хотите вывести значение этой переменной.

echo "My variable is $VARIABLE_NAME"

Несколько примеров часто возникающих ситуаций использования команды READ

Пример 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:

 

Оцените статью
( Пока оценок нет )
Блог админа