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