Как сохранить вывод команды как переменную в Bash? PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Как сохранить вывод команды как переменную в Bash?

Введение

В bash-скриптах назначение вывода команды переменным может быть удобным за счет сохранения вывода команд и использования их позже.

В этом кратком руководстве мы рассмотрим, как можно сохранить вывод команды в виде переменной в Bash.

Основы настройки переменных

Сохранение вывода команды в виде переменной достигается за счет подстановка команд. Подстановка команд — это оболочка, которая выполняет команду в среда подоболочкии заменяет обернутую команду стандартным выводом среды, в которой была запущена команда. На этот выход можно ссылаться позже, если он подключен к ссылочной переменной!

Подстановка команд может быть достигнута с помощью обратных кавычек или знака доллара в скобках:

`command`

$(command)

Идут споры о том, `команда` (обратные кавычки) или $ (команда) (знак доллара и круглые скобки) следует использовать в качестве «наилучшей практики». $(command) хорошо работает при вложенности и в некоторых случаях улучшает читаемость, но вы можете использовать любой синтаксис в следующих примерах.

При этом назначение вывода команды переменной в Bash так же просто, как:

VARIABLE=$(command)
echo "${VARIABLE}"

Бег ${variable} известен как расширение параметраи используется для оценки и извлечения значения, связанного со ссылочной переменной.

Давайте теперь посмотрим на простой пример настройки переменной для команды изменения цвета вывода:

#!/bin/bash
GREEN=$(tput setaf 2)
echo "${GREEN}Please"

ORANGE=$(tput setaf 9)
echo "${ORANGE}Visit"

echo "${GREEN}Paris"

Во фрагменте мы использовали tput и присвоил возвращаемое значение этих команд для печати цветного текста. setaf изменяет цвет переднего плана, а 3 (зеленый) и 9 (оранжевый) являются цветовыми кодами.

Теперь мы перейдем к другому примеру, который содержит несколько условий для установки переменных для разных команд:

#!/bin/bash
PERSON=$(whoami)
echo -e "Hey ${PERSON}! I am Charlien"

DETAILS=$(uname -a)
echo -e "You're running this script on:n${DETAILS}n"

DATES=$(date)
echo -e "The script is being run on:n${DATES}n"

CREATE=$(touch $(date +"%d%m%Y").txt)
echo -e "A text file logging this run is created.${CREATE}n"

LOCATION=$(ls 
  -l *txt)
echo -e "Saved text file at: ${LOCATION}"

В приведенном выше скрипте whoami Команда возвращает имя пользователя текущего пользователя. uname -a возвращает системную информацию, а date возвращает текущее время и дату.

Примечание: Мы можем сцепить назначение переменных, добавив несколько команд в один вложенный вызов. CREATE переменная содержит вывод touch команда, которая, в свою очередь, создает файл и устанавливает имя файла для вывода date +"%d%m%Y команда.

Ознакомьтесь с нашим практическим руководством по изучению Git с рекомендациями, принятыми в отрасли стандартами и прилагаемой памяткой. Перестаньте гуглить команды Git и на самом деле изучить это!

Наконец, мы добавляем multiline концепция назначения командной переменной путем добавления обратной косой черты () между ls команду -l флаг для отображения только текстовых файлов с использованием *.txt. Обратная косая черта — это escape-символ, который информирует оболочку о том, что следующий символ не следует интерпретировать.

В echo команда, мы добавили -e флаг для использования специального символа, т.е. n (новая строка), чтобы напечатать вывод в новой строке.

После выполнения скрипта получаем следующий результат:

$ ./variable.sh

Заключение

В этом кратком руководстве мы рассмотрели, как вы можете установить вывод команды в переменную в Bash. Мы рассмотрели разницу между синтаксисом для подстановка команд, отмечая улучшения читабельности $(command) над заменой на основе обратной кавычки. Затем мы рассмотрели несколько примеров как простого присваивания, так и связанного/вложенного присваивания вывода.

Отметка времени:

Больше от Стекабьюс