Учебники

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

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

пример

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

Live Demo

#!/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

\ а

оповещение (BEL)

3

\ б

возврат на одну позицию

4

\ с

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

5

\ е

подача формы

6

\ п

новая линия

7

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

8

\ т

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

9

\ v

вертикальная вкладка

\\

обратный слэш

\ а

оповещение (BEL)

\ б

возврат на одну позицию

\ с

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

\ е

подача формы

\ п

новая линия

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

\ т

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

\ v

вертикальная вкладка

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

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

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

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

Синтаксис

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

`command`

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

пример

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

Live Demo

#!/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 .

2

$ {вар: -слово}

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

3

$ {Var: = слово}

Если переменная равна нулю или не установлена, переменная устанавливается на значение слова .

4

$ {вар: сообщение}

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

5

$ {вар: + слово}

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

$ {вар}

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

$ {вар: -слово}

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

$ {Var: = слово}

Если переменная равна нулю или не установлена, переменная устанавливается на значение слова .

$ {вар: сообщение}

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

$ {вар: + слово}

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

пример

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

Live Demo

#!/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}"

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