zaLinux.ru

Как присвоить переменной вывод команды в Bash


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

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

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *