<Предыдущая | Содержание: | Следующая>
Присвоение значений переменным и константам
Вот где действительно начинают окупаться наши знания о расширении. Как мы видели, переменным присваиваются значения следующим образом:
переменная=ценностное
в котором переменная это имя переменной и ценностное это строка. В отличие от некоторых других языков программирования, оболочка не заботится о типе данных, присвоенных переменной; он рассматривает их все как строки. Вы можете заставить оболочку ограничить присваивание целыми числами, используя объявлять команда с -i вариант, но, как и установка переменных только для чтения, это делается редко.
Обратите внимание, что в присвоении не должно быть пробелов между именем переменной, знаком равенства и значением. Так из чего может состоять ценность? Все, что можно разложить в строку:
а = г
b = "строка"
c = "строка и $ b"
d = $ (ls -l foo.txt) e = $ ((5 * 7)) f = "\ t \ ta строка \ n"
# Присвойте строку "z" переменной a.
# Встроенные пробелы должны быть заключены в кавычки.
# Другие расширения, такие как переменные, могут быть
# развернуто в задание.
# Результаты команды.
# Арифметическое расширение.
# Экранирующие последовательности, такие как табуляция и перевод строки.
а = г
b = "строка"
c = "строка и $ b"
d = $ (ls -l foo.txt) e = $ ((5 * 7)) f = "\ t \ ta строка \ n"
В одной строке можно выполнить несколько назначений переменных:
a = 5 b = "строка"
a = 5 b = "строка"
Во время раскрытия имена переменных могут быть заключены в необязательные фигурные скобки «{}». Это полезно в случаях, когда имя переменной становится неоднозначным из-за окружающего его контекста.
текст. Здесь мы пытаемся изменить имя файла с мой файл в мой файл1, используя переменную:
[я @ linuxbox ~] $ filename = "myfile" [я @ linuxbox ~] $ коснитесь $ filename [я @ linuxbox ~] $ mv $ имя_файла $ имя_файла1
mv: отсутствует операнд конечного файла после myfile. Для получения дополнительной информации попробуйте mv --help.
[я @ linuxbox ~] $ filename = "myfile" [я @ linuxbox ~] $ коснитесь $ filename [я @ linuxbox ~] $ mv $ имя_файла $ имя_файла1
mv: отсутствует операнд конечного файла после myfile. Для получения дополнительной информации попробуйте mv --help.
Эта попытка не удалась, потому что оболочка интерпретирует второй аргумент mv как новую (и пустую) переменную. Проблему можно решить так:
[я @ linuxbox ~] $ mv $ имя_файла $ {имя_файла} 1
[я @ linuxbox ~] $ mv $ имя_файла $ {имя_файла} 1
Добавляя окружающие фигурные скобки, оболочка больше не интерпретирует завершающие 1 как часть имени переменной.
Мы воспользуемся этой возможностью, чтобы добавить некоторые данные в наш отчет, а именно дату и время создания отчета и имя пользователя создателя:
#! / Bin / Баш
# Программа для вывода страницы с системной информацией TITLE = "Отчет о системной информации для $ HOSTNAME"
CURRENT_TIME = $ (дата + "% x% r% Z")
TIMESTAMP = "Создано $ CURRENT_TIME, $ USER"
эхо "
$ TITLE
$ TITLE
$ TIMESTAMP
"
#! / Bin / Баш
# Программа для вывода страницы с системной информацией TITLE = "Отчет о системной информации для $ HOSTNAME"
CURRENT_TIME = $ (дата + "% x% r% Z")
TIMESTAMP = "Создано $ CURRENT_TIME, $ USER"
эхо "
$ TITLE
$ TITLE
$ TIMESTAMP
"