Unix / Linux - Замена оболочки

Что такое подмена?

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

пример

Здесь печатное значение переменной заменяется ее значением. В то же время,"\n" заменяется новой строкой -

#!/bin/sh

a=10
echo -e "Value of a is $a \n"

Вы получите следующий результат. Здесь-e опция включает интерпретацию экранирования обратной косой черты.

Value of a is 10

Ниже приводится результат без -e вариант -

Value of a is 10\n

Следующие escape-последовательности, которые можно использовать в команде echo -

Sr.No. Побег и описание
1

\\

обратная косая черта

2

\a

предупреждение (BEL)

3

\b

Backspace

4

\c

подавить завершающую новую строку

5

\f

подача формы

6

\n

новая линия

7

\r

возврат каретки

8

\t

горизонтальная вкладка

9

\v

вертикальная табуляция

Вы можете использовать -E опция для отключения интерпретации escape-символов обратной косой черты (по умолчанию).

Вы можете использовать -n возможность отключить вставку новой строки.

Подстановка команд

Подстановка команд - это механизм, с помощью которого оболочка выполняет заданный набор команд, а затем заменяет их вывод на место команд.

Синтаксис

Подстановка команды выполняется, когда команда задана как -

`command`

При выполнении подстановки команд убедитесь, что вы используете обратную кавычку, а не символ одинарной кавычки.

пример

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

#!/bin/sh

DATE=`date`
echo "Date is $DATE"

USERS=`who | wc -l`
echo "Logged in user are $USERS"

UP=`date ; uptime`
echo "Uptime is $UP"

После выполнения вы получите следующий результат -

Date is Thu Jul  2 03:59:57 MST 2009
Logged in user are 1
Uptime is Thu Jul  2 03:59:57 MST 2009
03:59:57 up 20 days, 14:03,  1 user,  load avg: 0.13, 0.07, 0.15

Замена переменных

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

Вот следующая таблица для всех возможных замен -

Sr.No. Форма и описание
1

${var}

Подставьте значение var .

2

${var:-word}

Если var имеет значение null или не задано, слово заменяется наvar. Значение var не меняется.

3

${var:=word}

Если var имеет значение null или не задано , var устанавливается значениеword.

4

${var:?message}

Если var имеет значение null или не задано, сообщение выводится со стандартной ошибкой. Это проверяет правильность установки переменных.

5

${var:+word}

Если установлено var , слово заменяется на var. Значение var не меняется.

пример

Ниже приведен пример, показывающий различные состояния вышеуказанной замены.

#!/bin/sh

echo ${var:-"Variable is not set"}
echo "1 - Value of var is ${var}"

echo ${var:="Variable is not set"}
echo "2 - Value of var is ${var}"

unset var
echo ${var:+"This is default value"}
echo "3 - Value of var is $var"

var="Prefix"
echo ${var:+"This is default value"}
echo "4 - Value of var is $var"

echo ${var:?"Print this message"}
echo "5 - Value of var is ${var}"

После выполнения вы получите следующий результат -

Variable is not set
1 - Value of var is
Variable is not set
2 - Value of var is Variable is not set

3 - Value of var is
This is default value
4 - Value of var is Prefix
Prefix
5 - Value of var is Prefix