Bash-скрипт — подстановка команд
Чтобы понять подстановку команд, давайте сначала обсудим подстановку в сценариях оболочки. Подстановка — это функция, следуя которой мы можем указать оболочке заменить фактическое значение выражения.
Пример:
В приведенной ниже программе мы сначала создали переменную str и присвоили ей значение «GeeksforGeeks», а затем заменили значение строки str («GeeksforGeeks») в команде echo.
//myStript.sh #!/bin/sh str="GeeksforGeeks" echo -e "str: $str"
Выход:
В этой статье основное внимание уделяется технике подстановки команд, используемой в сценарии Bash.
Есть некоторые последовательности символов, которые не отражают их истинную природу, но имеют особое значение для операционной системы, и эти последовательности известны как управляющие последовательности. Когда они используются в команде, они заменяются фактическими значениями.
| Escape-последовательности | Значение |
|---|---|
| новая линия | |
| р | возврат каретки |
| т | горизонтальная вкладка |
| б | назад |
| \ | обратная косая черта |
Подстановка команд
Подстановка команд — это механизм, которому следуют программисты в сценарии bash. В этом механизме вывод команды заменяет саму команду. Bash выполняет расширение, выполняя команду, а затем заменяя подстановку команды стандартным выводом команды. Проще говоря, вывод команды UNIX объединяется и затем используется как команда.
Чтобы лучше понять это, давайте рассмотрим пример. Команда seq в Linux используется для печати чисел от START до END с шагом INCREMENT.
Синтаксис:
seq START INCREMENT END
Тип возврата:
Prints numbers from START to END each in the new line by the difference of INCREMENT.
Пример:
В приведенном ниже сценарии мы печатаем числа от 2 до 20 с разницей в 2. Другими словами, мы печатаем четные числа до 20.
#!/bin/bash # your code goes here seq 2 2 20
Выход:
Мы можем использовать вывод вышеуказанной команды в качестве новой команды. Рассмотрим приведенный ниже сценарий,
Пример:
#!/bin/bash # your code goes here echo $(seq 2 2 20)
Выход:
Переменные и расширение команд
В процессе подстановки команды вывод команды может быть назначен переменной, как и любое другое значение.
Пример:
В приведенном ниже сценарии мы присвоили результат команды echo обеим строкам в переменных, «varaiable1» и «variable2» соответственно. Затем мы использовали эти переменные в команде echo.
#!/bin/bash variable1=$(echo "Full form of gfg is" ) variable2=$(echo "GeekforGeeks") echo "$variable1 : $variable2"
Выход:
Потеря новых строк при подстановке команд
В механизме подстановки команд, если вывод заменяемой команды содержит завершающие символы новой строки, то в этом случае завершающие символы новой строки удаляются после замены. Обратите внимание, что встроенные символы новой строки не удаляются, но они могут быть удалены при разделении слов.
Пример:
В этом скрипте мы используем команду seq. Теперь команда seq выводит числа на консоль и добавляет символ новой строки после вывода каждого числа на консоль.
#!/bin/bash # your code goes here seq 1 2 19
Выход:
Пример:
В этом скрипте мы использовали результат вышеприведенной команды и подставили его в команду. Как видно из вывода, в консоль выводятся числа от 1 до 19 с разницей в 2. Но на этот раз все они печатаются в одной строке без символа новой строки.
#!/bin/bash # your code goes here echo $(seq 1 2 19)
Выход: