Задняя панель -Управление подсветкой ноутбука с двумя экранами

Я бы предложил другой подход. Ваш файл переменных очень похож на оператор присваивания в синтаксисе оболочки. Единственная проблема — пробелы вокруг оператора присваивания (, вы можете найти более подробную информацию об этом здесь). Во-первых, вы можете использовать команду sed, подобную приведенной ниже, чтобы исправить пробел:

$ cat vars.txt
variable1 = 25
variable2 = 36

$ sed -i 's/ = /=/' vars.txt

$ cat vars.txt
variable1=25
variable2=36

Как только вы это сделаете, просто sourceфайл, чтобы установить все переменные, как вам нужно:

#!/bin/bash
source vars.txt
echo "Variable 1: $variable1, Variable 2: $variable2"

Что даст вам вывод:

Variable 1: 25, Variable 2: 36

Как отмечает roaima в комментариях, этот подход связан с проблемой безопасности. Когда вы sourceсоздаете свой файл, вы, по сути, запускаете его как сценарий оболочки. (Сравнение выполнения сценария и источника сценария объясняется здесь). Это означает, что вы должны доверять содержимому этого файла. Если злонамеренный пользователь или процесс сможет редактировать файл, вы можете выполнить произвольные команды.

Также, как отмечает roaima, кавычки потребуются, если значения переменных содержат специальные символы. Этот ответ был написан специально для набора данных в вопросе, который имеет только числовые значения для переменных. Его нельзя легко расширить для других типов значений.

0
18.12.2019, 19:21
0 ответов

Теги

Похожие вопросы