Вступ
У сценаріях bash присвоєння виводу команди змінним може бути зручним шляхом збереження виводів команд і використання їх пізніше.
У цьому короткому посібнику ми розглянемо, як ви можете зберегти вихід команди як змінну в Bash.
Основи налаштування змінних
Збереження результату команди як змінної досягається за допомогою підміна команд. Підстановка команди — це оболонка, яка виконує команду в a середовище підоболонки, і замінює обгорнуту команду стандартним виводом середовища, у якому була запущена команда. На цей вихід можна посилатися пізніше, якщо його підключити до посилальної змінної!
Підстановку команд можна здійснити за допомогою зворотних галочок або знака долара з круглими дужками:
`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
і присвоїв значення, що повертаються цими командами, для друку кольорового тексту. The 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
команда повертає ім'я користувача поточного користувача. The uname -a
повертає системну інформацію, і date
повертає поточний час і дату.
Примітка: Ми можемо ланцюгово призначати змінні, додаючи кілька команд в один вкладений виклик. The CREATE
змінна містить вихідні дані touch
яка, у свою чергу, створює файл і встановлює ім’я файлу для виводу date +"%d%m%Y
команда
Ознайомтеся з нашим практичним практичним посібником із вивчення Git з передовими методами, прийнятими в галузі стандартами та включеною шпаргалкою. Припиніть гуглити команди Git і фактично вчитися це!
Нарешті, ми додаємо a multiline
концепція призначення змінної команди шляхом додавання зворотної косої риски ()
між ls
команда -l
прапорець для відображення лише текстових файлів за допомогою *.txt
. Зворотний слеш є символом екранування, який інформує оболонку не інтерпретувати наступний символ.
У echo
ми додали команду -e
прапор для використання спеціального символу, тобто n
(новий рядок), щоб надрукувати вивід у новому рядку.
Після виконання скрипта ми отримуємо такий результат:
$ ./variable.sh
Висновок
У цьому короткому посібнику ми розглянули, як можна встановити вихід команди на змінну в Bash. Ми розглянули різницю між синтаксисом для підміна команд, зазначивши покращення читабельності $(command)
над заміною на основі зворотної галочки. Потім ми розглянули кілька прикладів як простого призначення, так і ланцюжкового/вкладеного призначення виводу.