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