 |
Альтернативой обратным одиночным кавычкам, используемым для подстановки команд, можно считать такую форму записи: $(COMMAND).
Определение переменных в Bash
Переменные в Bash позволяют хранить в себе определенные числовые или текстовые значения.
Для объявления переменной достаточно написать ее имя и значение, которое она в себе будет хранить. При обращении к переменной, нужно предварять ее знаком доллара — $ :
Не ставьте пробелы до и после знака равенства — = , т.к. в этом случае оболочка может ошибочно принять имя переменной за имя команды.
Правильно: my_var=45
Неправильно: my_var = 45
Системные переменные
Изначально в Bash доступен набор переменных, которые были определены разработчиками оболочки. Эти переменные предназначены для хранения настроек оболочки. Переопределяя значения системных переменных, вы сможете изменить конфигурацию командной оболочки.
В именах системных переменных принято использовать только заглавные буквы, а слова отделяются символом подчеркивания, например PS1 , PATH , BASH_VERSION и др.
Узнать список системных переменных можно с помощью следующих команд.
Использование переменных
Переменные часто используются в вывод строк. Чтобы указать переменную в строке укажите ее внутри двойных кавычек.
этот вопрос уже есть ответ здесь:
у меня проблема с размещением содержимого pwd команда в переменную оболочки, которую я буду использовать позже.
вот мой код оболочки (цикл не делает стоп):
не могли бы вы заметить мою ошибку, пожалуйста?
5 ответов:
обратите внимание на отсутствие пробелов после знака равенства.
также, как указывает г-н Вайс; вы не назначаете $pwd , назначить pwd .
в оболочке вы присваиваете переменной без знака доллара:
это лучше (и может быть вложенным), но не так портативно, как backtics:
всегда помните: знак доллара используется только при чтении переменной.
в этом конкретном случае обратите внимание, что bash имеет переменную с именем PWD который содержит текущий каталог: $PWD эквивалентно `pwd` . (Так же как и другие оболочки, это стандартные функции.) Так что вы можете написать свой скрипт так:
обратите внимание на использование двойных кавычек вокруг ссылок на переменные. Они необходимы, если переменная (здесь, текущий каталог) содержит пробелы или подстановочные знаки ( [?* ), потому что оболочка шпагат результат переменной, разложения на слова и выполняет подстановку на эти слова. всегда двойные кавычки переменные расширения «$foo» и команду замены «$(foo)» (если вы специально не знаете, что вы не должны).
В общем случае, как уже упоминалось в других ответах:
- вы не можете использовать пробелы вокруг знака равенства в задание: var=value , а не
var = value
- The $ означает «возьмите значение этой переменной», поэтому вы не используете его при назначении: var=value , а не
$var=value .
вы также можете сделать более сложные команды, просто чтобы закруглить примеры выше. Итак, скажем, я хочу получить количество процессов, запущенных в системе, и сохранить его в $ переменной.
все, что вам нужно, так это создать командный конвейер и поместить его вывод (количество процессов) в переменную.
это выглядит примерно так:
Я надеюсь, что это поможет добавить некоторую полезную информацию к этому обсуждению.