Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования Π½Π° языкС сцСнариСв ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 6

Автор МСндСль ΠšΡƒΠΏΠ΅Ρ€

ο‚· Ctl-C

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ выполнСния процСсса.

ο‚· Ctl-D

Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° (log out) (Π°Π½Π°Π»ΠΎΠ³ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ exit).

"EOF" (ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π°). Π­Ρ‚ΠΎΡ‚ символ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π² качСствС Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ с stdin.

ο‚· Ctl-G

"BEL" (Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ сигнал -- "Π·Π²ΠΎΠ½ΠΎΠΊ").

ο‚· Ctl-H

Backspace -- ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ символа.

#!/bin/bash

# Вставка символа Ctl-H Π² строку.


a="^H^H" # Π”Π²Π° символа Ctl-H (backspace).

echo "abcdef" # abcdef

echo -n "abcdef$a " # abcd f

# ΠŸΡ€ΠΎΠ±Π΅Π» Π² ΠΊΠΎΠ½Ρ†Π΅ ^ ^ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ шаг Π½Π°Π·Π°Π΄.

echo -n "abcdef$a" # abcdef

# ΠŸΡ€ΠΎΠ±Π΅Π»Π° Π² ΠΊΠΎΠ½Ρ†Π΅ Π½Π΅Ρ‚ backspace Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ (ΠΏΠΎΡ‡Π΅ΠΌΡƒ?).

# Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ совсСм Π½Π΅ Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅.

echo; echo


ο‚· Ctl-J

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ.

ο‚· Ctl-L

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° (очистка экрана (ΠΎΠΊΠ½Π°) Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°). Аналогична ΠΊΠΎΠΌΠ°Π½Π΄Π΅ clear.

ο‚· Ctl-M

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки.

ο‚· Ctl-U

Π‘Ρ‚ΠΈΡ€Π°Π½ΠΈΠ΅ строки Π²Π²ΠΎΠ΄Π°.

ο‚· Ctl-Z

ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° процСсса.

ΠŸΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹ΠΉ символ

ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’ качСствС ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ символа ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ -- собствСнно ΠΏΡ€ΠΎΠ±Π΅Π» (space), символ табуляции, символ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, символ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ комбинация ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… символов. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ присваиваниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, использованиС ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Ρ… символов нСдопустимо.

ΠŸΡƒΡΡ‚Ρ‹Π΅ строки Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ свободно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ выдСлСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² сцСнария.

$IFS -- пСрСмСнная ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ назначСния. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ символы-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ ΠΏΠΎΠ»Π΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ. По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ -- ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы.

Π“Π»Π°Π²Π° 4. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ -- это ΠΎΠ΄Π½Π° ΠΈΠ· основ любого языка программирования. Они ΡƒΡ‡Π°Π²ΡΡ‚Π²ΡƒΡŽΡ‚ Π² арифмСтичСских опСрациях, Π² синтаксичСском Π°Π½Π°Π»ΠΈΠ·Π΅ строк ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для абстрагирования ΠΊΠ°ΠΊΠΈΡ… Π»ΠΈΠ±ΠΎ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ символичСских ΠΈΠΌΠ΅Π½. ЀизичСски ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π½ΠΈ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅ ΠΊΠ°ΠΊ участки памяти, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ записана нСкоторая информация.


4.1. ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Когда ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ встрСчаСт Π² тСкстС сцСнария имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ ΠΎΠ½ вмСсто Π½Π΅Π³ΠΎ подставляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ссылки Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ подстановкой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

$

НСобходимо всСгда ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ различиях ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Если variable1 -- это имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ $variable1 -- это ссылка Π½Π° Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. "ЧистыС" ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π±Π΅Π· прСфикса $, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ, ΠΏΡ€ΠΈ присваивании ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ значСния, ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ (сбросС), ΠΏΡ€ΠΈ экспортС ΠΈ Π² особых случаях -- ΠΊΠΎΠ³Π΄Π° пСрСмСнная прСдставляСт собой Π½Π°Π·Π²Π°Π½ΠΈΠ΅ сигнала (см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 29-5). ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ символа = (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: var1=27), инструкциСй read ΠΈ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Ρ†ΠΈΠΊΠ»Π° (for var2 in 1 2 3).

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ссылки Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ (" ") Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ сказываСтся Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° подстановки. Π­Ρ‚ΠΎΡ‚ случай называСтся "частичныС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ", ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ "нСстрогиС ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ". ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ (' ') Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ссылку Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ простой Π½Π°Π±ΠΎΡ€ символов, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ подстановки Π½Π΅ производятся. Π­Ρ‚ΠΎΡ‚ случай называСтся "ΠΏΠΎΠ»Π½Ρ‹Π΅", ΠΈΠ»ΠΈ "строгиС" ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π² Π“Π»Π°Π²Π° 5.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ написаниС $variable фактичСски являСтся ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ написания ${variable}. Π‘ΠΎΠ»Π΅Π΅ строгая Ρ„ΠΎΡ€ΠΌΠ° записи ${variable} ΠΌΠΎΠΆΠ΅Ρ‚ с успСхом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ записи ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ сообщСния ΠΎ синтаксичСских ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… (см. Section 9.3, Π½ΠΈΠΆΠ΅).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4-1. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ подстановка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

#!/bin/bash


# ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ подстановка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…


a=375

hello=$a


#-------------------------------------------------------------------------

# ИспользованиС ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Ρ… символов

# с ΠΎΠ±Π΅ΠΈΡ… сторон символа "=" присваивания нСдопустимо.


# Если Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ "VARIABLE =value",

#+ Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ попытаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ "VARIABLE" с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ "=value".


# Если Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ "VARIABLE= value",

#+ Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ попытаСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния "VARIABLE" Π² ""

#+ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ "value".

#-------------------------------------------------------------------------


echo hello # Π­Ρ‚ΠΎ Π½Π΅ ссылка Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ строку "hello".


echo $hello

echo ${hello} # Π˜Π΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ строкС.


echo "$hello"

echo "${hello}"


echo


hello="A B C D"

echo $hello # A B C D

echo "$hello" # A B C D

# Π—Π΄Π΅ΡΡŒ Π²Ρ‹ смоТСтС Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ различия Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ echo $hello ΠΈ echo "$hello".

# Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ссылки Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ сохраняСт ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы.


echo


echo '$hello' # $hello

# Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π½Π΅ производится подстановка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…,

#+ Ρ‚.Π΅. "$" интСрпрСтируСтся ΠΊΠ°ΠΊ простой символ.


# ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° различия, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ этими Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ.


hello= # Π—Π°ΠΏΠΈΡΡŒ пустого значСния Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.

echo "\$hello (пустоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) = $hello"

# ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: запись пустого значСния -- это Π½Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС,

#+ Ρ‡Ρ‚ΠΎ сброс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, хотя ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ -- Ρ‚ΠΎΡ‚ ΠΆΠ΅ (см. Π½ΠΈΠΆΠ΅).


# --------------------------------------------------------------


# ДопускаСтся присваиваниС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΉ строкС,

#+ Ссли ΠΎΠ½ΠΈ ΠΎΡ‚Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами.

# Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сцСнария ΠΈ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ нСпСрСносимым.


var1=variable1 var2=variable2 var3=variable3

echo

echo "var1=$var1 var2=$var2 var3=$var3"


# ΠœΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ вСрсиями "sh".


# --------------------------------------------------------------


echo; echo


numbers="ΠΎΠ΄ΠΈΠ½ Π΄Π²Π° Ρ‚Ρ€ΠΈ"

other_numbers="1 2 3"

# Если Π² значСниях ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹,

# Ρ‚ΠΎ использованиС ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

echo "numbers = $numbers"

echo "other_numbers = $other_numbers" # other_numbers = 1 2 3

echo


echo "uninitialized_variable = $uninitialized_variable"

# НСинициализированная пСрСмСнная содСрТит "пустоС" Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

uninitialized_variable= # ОбъявлСниС Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

#+ (Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ присваиваниС пустого значСния, см. Π²Ρ‹ΡˆΠ΅).

echo "uninitialized_variable = $uninitialized_variable"

# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ содСрТит "пустоС" Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.


uninitialized_variable=23 # ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅.

unset uninitialized_variable # Бброс.

echo "uninitialized_variable = $uninitialized_variable"

# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ содСрТит "пустоС" Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.


echo


exit 0

НСинициализированная пСрСмСнная Ρ…Ρ€Π°Π½ΠΈΡ‚ "пустоС" Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ - Π½Π΅ ноль!. ИспользованиС Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ошибкам Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π² процСссС исполнСния.

НС смотря Π½Π° это Π² арифмСтичСских опСрациях допускаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

echo "$uninitialized" # (пустая строка)

let "uninitialized += 5" # ΠŸΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ 5.

echo "$uninitialized" # 5


# Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

# НСинициализированныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ значСния, ΠΎΠ΄Π½Π°ΠΊΠΎ

#+ Π² арифмСтичСских опСрациях Π·Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… принимаСтся число 0.

# Π­Ρ‚ΠΎ нСдокумСнтированная (ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ нСпСрСносимая) Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.

Π‘ΠΌ. Ρ‚Π°ΠΊ ΠΆΠ΅ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 11-19.


4.2. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ

=

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания (ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы Π΄ΠΎ ΠΈ послС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° -- нСдопустимы)

НС ΠΏΡƒΡ‚Π°ΠΉΡ‚Π΅ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ сравнСния = ΠΈ -eq!

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: символ = ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π² качСствС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания, Ρ‚Π°ΠΊ ΠΈ Π² качСствС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° сравнСния, конкрСтная интСрпрСтация зависит ΠΎΡ‚ контСкста примСнСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4-2. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ присваиваниС

#!/bin/bash

# Π―Π²Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅


echo


# Когда ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ употрСбляСтся символ '$'?