Подстановка команд в Linux
Подстановка команд
Подстановка команд - это подстановка результатов выполнения команды или даже серии команд. Это операция которая позволяет вызывать команду в другом окружении.
#1 способ, использование обратных кавычек (`...`)
result=`pwd`
echo $result
#2 способ,
Вывод команд может использоваться как аргумент для другой команды, для установки значения переменной или для генерации списка для цикла for
#Вывод команд используется как аргумент для другой команды
rm `cat list-file.txt`
#Более правильный вариант, в данном случае используется -- на тот случай если файл в списке начинается с символа - ( -name )
xargs rm -- < list-file.txt
#Запись списка файлов в переменную
list_file=`ls folder`
#Альтернативный вариант
list_file=$(ls folder)
Подставляемая команда может получиться разбитой на отдельные слова
#2 аргумента
`echo a b`
#1 аргумент
"`echo a b`"
#1 пустой аргумент
"`echo`"
#Нормальное выполнение
cd "`pwd`"
#Нормальное выполнение
cd "$PWD"
Канонический режим — это такой режим, когда ввод-вывод с/на терминал осуществляются по-строчно.
Неканонический режим — это когда терминал работает в несвойственном для терминалов режиме, в частности ввод происходит по-символьно.
#Сохранить настройки терминала
old_tty=$(stty -g)
#Запретить канонический режим терминала и эхо вывод
stty -icanon -echo
#Поймать нажатие на клавишу
key=$(dd bs=1 count=1 2< /dev/null)
#Восстановить настройки терминала
stty "$old_tty"
#Запись в перменную содержимого файла
content=`<test`; #или contest=`cat test`
#Удаляются символы перевода строки
#!/bin/bash
variable1=`for i in 1 2 3 4 5
do
echo -n "$i"
done`
echo "$variable1"
echo "**************************************************"
i=0
variable2=`while [ "$i" -lt 10 ]
do
echo -n "$i"
let "i += 1"
done`
echo "$variable2"
Арифметические подстановки
z=`expr $z + 3` # Подстановка команды $z = 3
z=$(($z+3)) # Подстановка арифметического выражения $z = 6
let z=z+3 # $z = 9
let "z += 3" # Кавычки позволяют вставлять пробелы и специальные операторы $z = 12
Источники
Связанные темы
Использование команды tee в Linux
Использование wget и curl в Linux
Команда chattr и lsattr в Linux
Использование awk Linux Alpine
Блокировка пользователя в Linux
Проверка на необходимость перезапуска после обновления пакетов
Стандартные потоки и перенаправление ввода/вывода в Linux
Архивирование и сжатие файлов в Linux
Полезные команды и скрипты Linux
Условная конструкция if в Linux
Использование оператора select в языке shell
Внутренние и внешние команды linux
Использование конструкции case в Linux