Онлайн робочі станції OnWorks Linux та Windows

логотип

Безкоштовний онлайн-хостинг для робочих станцій

<Попередній | зміст | Наступна>

Змінні та константи

Проте з нашим сценарієм є проблема. Зверніть увагу, як повторюється рядок «Звіт про систему»? З нашим крихітним сценарієм це не проблема, але давайте уявімо, що наш сценарій був дійсно довгим і ми мали кілька екземплярів цього рядка. Якби ми хотіли змінити назву на щось інше, нам довелося б змінити її в кількох місцях, що могло б бути великою роботою. Що якби ми могли організувати сценарій так, щоб рядок з’являвся лише один раз, а не кілька разів? Це значно полегшить подальше обслуговування сценарію. Ось як ми можемо це зробити:



#! / бін / баш


# Програма для виведення сторінки системної інформації


title="Звіт про системну інформацію"


луна"

$title

$title

"

#! / бін / баш


# Програма для виведення сторінки системної інформації


title="Звіт про системну інформацію"


луна"

$title

$title

"


Створюючи а змінна названий назву і призначивши йому значення “System Information Report”, ми можемо скористатися перевагами розширення параметрів і розмістити рядок у кількох місцях.

Отже, як ми створюємо змінну? Просто, ми просто використовуємо його. Коли оболонка зустрічає змінну, вона автоматично створює її. Це відрізняється від багатьох мов програмування, в яких змінні мають бути явно оголошений або визначені перед використанням. Оболонка дуже слабка щодо цього, що може призвести до деяких проблем. Наприклад, розглянемо цей сценарій, який відтворюється в командному рядку:


[me@linuxbox ~]$ foo="так" [me@linuxbox ~]$ echo $foo так

[me@linuxbox ~]$ луна $дурка


[me@linuxbox ~]$

[me@linuxbox ~]$ foo="так" [me@linuxbox ~]$ echo $foo так

[me@linuxbox ~]$ луна $дурка


[me@linuxbox ~]$


Спочатку ми присвоюємо змінній значення «так». Foo, а потім відобразіть його значення за допомогою нудьгувати. Далі ми відображаємо значення імені змінної з помилкою «fool» і отримуємо порожній результат. Це тому, що оболонка щасливо створила змінну задурювати коли він зіткнувся з ним, і надав йому значення за замовчуванням нічого, або пусте. З цього ми дізнаємося, що ми повинні уважно стежити за своїм правописом! Також важливо зрозуміти, що насправді сталося в цьому прикладі. З нашого попереднього погляду на те, як оболонка виконує розширення, ми знаємо, що команда:



[me@linuxbox ~]$ echo $foo

[me@linuxbox ~]$ echo $foo


зазнає розширення параметрів і призводить до:



[me@linuxbox ~]$ echo так

[me@linuxbox ~]$ echo так


Тоді як команда:



[me@linuxbox ~]$ echo $fool

[me@linuxbox ~]$ echo $fool


розширюється на:



[me@linuxbox ~]$ echo

[me@linuxbox ~]$ echo


Порожня змінна розгортається в ніщо! Це може зіграти хаос з командами, які вимагають аргументів. Ось приклад:



[me@linuxbox ~]$ foo=foo.txt [me@linuxbox ~]$ foo1=foo1.txt [me@linuxbox ~]$ cp $foo $дурень

cp: відсутній операнд файлу призначення після `foo.txt'

[me@linuxbox ~]$ foo=foo.txt [me@linuxbox ~]$ foo1=foo1.txt [me@linuxbox ~]$ cp $foo $дурень

cp: відсутній операнд файлу призначення після `foo.txt'


Спробуйте `cp --help' для отримання додаткової інформації.

Спробуйте `cp --help' для отримання додаткової інформації.


Ми призначаємо значення двом змінним, Foo та foo1. Потім виконуємо а cp, але неправильно введіть назву другого аргументу. Після розширення, cp команді надсилається лише один аргумент, хоча для неї потрібні два.

Існують деякі правила щодо імен змінних:

1. Назви змінних можуть складатися з буквено-цифрових символів (букв і цифр) і символів підкреслення.

2. Першим символом імені змінної має бути літера або символ підкреслення.

3. Пробіли та знаки пунктуації не допускаються.

Слово «змінна» означає значення, яке змінюється, і в багатьох програмах змінні використовуються таким чином. Однак змінна в нашій програмі, назву, використовується як a постійна. Константа схожа на змінну тим, що має ім’я та містить значення. Відмінність полягає в тому, що значення константи не змінюється. У програмі, яка виконує геометричні обчислення, ми можемо визначити PI як константу і призначте їй значення 3.1415, замість того, щоб використовувати число буквально в нашій програмі. Оболонка не робить відмінності між змінними та константами; в основному вони призначені для зручності програміста. Загальноприйнятою конвенцією є використання великих літер для позначення констант і малих літер для істинних змінних. Ми змінимо наш сценарій, щоб він відповідав цій конвенції:



#! / бін / баш

# Програма для виведення сторінки системної інформації TITLE="Інформаційний звіт про систему Для $HOSTNAME"луна"

$TITLE

$TITLE

"

#! / бін / баш

# Програма для виведення сторінки системної інформації TITLE="Інформаційний звіт про систему Для $HOSTNAME"луна"

$TITLE

$TITLE

"


Ми також скористалися можливістю покращити нашу назву, додавши значення змінної оболонки

ІМ'Я ХОСТУ. Це мережева назва машини.


зображення

примітки: Оболонка насправді забезпечує спосіб забезпечити незмінність констант за допомогою використання декларувати вбудована команда з -r (лише читання). Якби ми призначили TITLE сюди:


declare -r TITLE="Назва сторінки"


оболонка запобігає будь-якому подальшому присвоєнню до TITLE. Ця функція рідко використовується, але вона існує для дуже формальних сценаріїв.


зображення


 

Найпопулярніші хмарні обчислення ОС на OnWorks: