Присвоение и отображение переменной:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
Присвоение делается с помощью оператора присваивания =. var=abc Чтобы отобразить содержимое оболочковой переменной, нужно воспользоваться командой echo, при этом перед именем переменной необходимо поставить символ $: echo $var abc При присваивании переменных нельзя оставлять между оператором присваивания = и именем переменной пробелов. Запись var = abc синтаксически неверная и работать не будет! Если в содержимом оболочковой переменной должны содержаться пробелы или другие специальные символы, то при присваивании всю последовательность символов необходимо заключить в одиночные кавычки: var='abc efg" При присваивании можно записывать друг за другом сразу по несколько последовательностей символов. В следующем примере переменной а присваивается новая последовательность символов, состоящая из содержимого этой переменной, последовательности символов ххх и еще раз из исходного содержимого: a=3 a=$a'xxx'$a echo $a ЗхххЗ В следующем примере имеющаяся переменная PATH (со списком всех каталогов, в которых может осуществляться поиск исполняемых программ) дополняется в домашнем каталоге каталогом bin. Теперь вы можете выполнять любые команды, находящиеся в этом каталоге (не указывая путь полностью). echo SPATH /usr/1 ocal/sbin:/usr/1ocal/bi n:/usr/sbi n:/usr/bi n:/sbin:/bin PATH=$PATH':/home/kofler/bin echo $PATH /usr/1ocal/sbin:/usr/1ocal/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/kofler/bin Вычисления с переменными можно производить в квадратных скобках описанным выше способом: a=3 а=$[$а*4] echo $a 12 Если результат выполнения команды следует сохранить в переменной, нужно произвести описанную выше подстановку команды по образцу $(команда). В следующем примере текущий каталог сохраняется в а: a=$(pwd) echo $a /home/kofler |
!!! Содержимое переменных сохраняется только в оболочке:
1 2 3 4 5 6 |
Содержимое переменных сохраняется только в оболочке. При выходе из оболочки эта информация теряется. Если определенные переменные требуются вам снова и снова, то присваивание следует производить в файле /etc/profile или .profile домашнего каталога. Оба этих файла (если они имеются) автоматически выполняются при запуске bash. Если вы хотите сохранить содержимое одной из переменных в файле, то нужно выполнить команду echo с переадресацией ввода: echo $var > file |
Глобальные и локальные переменные:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Обратите внимание, что все переменные, полученные в результате обычного присваивания, могут быть только локальными! Чтобы задать глобальную переменную, следует выполнить export или declare -x. Для управления переменными в оболочке существуют многочисленные команды, которые функционально иногда дублируют друг друга. Например, для объявления глобальной переменной можно использовать как export, так и declare -x. Следующие примеры приводятся для того, чтобы немного прояснить ситуацию с дублирующимися командами: а=3 - Краткий способ записи let, переменная а является локальной declare a=3 - Присваивает локальной переменной а значение (как let) declare -x а=3 - Присваивает локальной переменной а значение (как export) export - Отображает все глобальные переменные export a - Делает переменную а глобальной export a=3 - Присваивает глобальной переменной а значение let a=3 - Присваивает глобальной переменной а значение local a=3 - Определяет переменную а как локальную (лишь в функциях оболочки) printenv - Как и export, отображает все глобальные переменные set - Отображает все переменные (и локальные, и глобальные) unset a - Удаляет переменную а |
Переменные, задаваемые оболочкой:
1 2 3 4 5 6 7 8 9 10 11 |
Программы оболочки могут обращаться и к некоторым переменным, заранее заданным bash. Эти переменные нельзя изменять в ходе присваивания, их можно только считывать. Имя переменной состоит из различных специальных символов. Переменные даются уже с предшествующим символом $. $? - Возвращаемое значение последней команды $! - Номер PID последнего запущенного фонового процесса $$ - PID текущей оболочки $0 - Имя файла, содержащего только что выполненный файл оболочки (или имя символьной ссылки, указывающей на файл) $# - Количество параметров, переданных программе оболочки От $1 до $9 - Параметр от 1 до 9 $* или $@ - Совокупность всех переданных параметров |