Если вам нужно, чтобы полученное от команды значение присваивалось переменной, то это можно сделать несколькими способами.
1. Используя обратные кавычки (апострофы). Пример кода:
#!/bin/bash VAR1="$1" VAR2="$2" MOREF=`sudo run command against $VAR1 | grep name | cut -c7-` echo $MOREF
Для этого варианта нужно помнить следующее: не перепутайте обратные кавычки с одиночными кавычками. А ещё использование этого синтаксиса считается теперь устаревшим (но везде работающим).
2. В дополнение к обратным кавычкам можно использовать $(). Преимуществом данного способа является возможность вложенности.
Пример:
OUTPUT="$(ls -1)" echo "${OUTPUT}"
Использование кавычек (") имеет смысл при возможности появления значений в несколько строк.
Ещё одним важным отличием $() от двойных кавычек является то, что при обращении к переменной, если ей присвоено значение $(), она пересчитывается каждый раз. А если значение переменной определено командой внутри обратных кавычек, то это значение считается только один раз (при присвоении), а затем только используется.
3. Можно создать пользовательскую функцию, содержащую необходимые команды, и использовать название функции вместо имени переменной. Пример:
func (){ ls -l }
Вызывать нужно по имени функции (в данном случае func).
4. И ещё более экзотический вариант – использование eval:
var="ls -l" eval $var
Связанные статьи:
- Лучшие терминальные мультиплексные инструменты (54.4%)
- Как обработать каждую строку, полученную от команды grep (54.4%)
- Работа LibreOffice в командной строке: конвертирование большого количества файлов и вывод содержимого офисных файлов в консоль (54.4%)
- Как использовать кавычки в регулярных выражениях grep (54.4%)
- Как использовать grep для поиска по стандартному выводу ошибок (stderr) (54.4%)
- Как передавать данные между контейнерами Docker (RANDOM - 50%)