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

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

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

Π‘ΠΈΠΌΠ²ΠΎΠ» "Ρ‚ΠΎΡ‡ΠΊΠ°" Π² опСрациях поиска. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ поиска ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ , Π² рСгулярных выраТСниях, символ "Ρ‚ΠΎΡ‡ΠΊΠ°" ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ символ.

"

Π”Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ . Π’ строкС "STRING", ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ Π½Π΅ выполняСтся интСрпрСтация Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° слуТСбных символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² строкС. см. Π“Π»Π°Π²Π° 5.

'

ΠžΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ . [ΠžΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ] 'STRING' экранируСт всС слуТСбныС символы Π² строкС STRING. Π­Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ строгая Ρ„ΠΎΡ€ΠΌΠ° экранирования. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊ ΠΆΠ΅ Π“Π»Π°Π²Π° 5.

,

Запятая . ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ запятая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для вычислСния сСрии арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π’Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ всС выраТСния, Π½ΠΎ возвращаСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ послСднСго выраТСния.

let "t2 = ((a = 9, 15 / 3))" # ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ "a" ΠΈ вычисляСт "t2".


\

escape. [ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слэш] ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ \X "экранируСт" символ X. Аналогичный эффСкт ΠΈΠΌΠ΅Π΅Ρ‚ комбинация с "ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ", Ρ‚.Π΅. 'X'. Π‘ΠΈΠΌΠ²ΠΎΠ» \ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для экранирования ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ " ΠΈ '.

Π‘ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ Ρ‚Π΅ΠΌΡ‹ экранирования посвящСна Π“Π»Π°Π²Π° 5.

/

Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ ΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌ. [слэш] ΠžΡ‚Π΄Π΅Π»ΡΠ΅Ρ‚ элСмСнты ΠΏΡƒΡ‚ΠΈ ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ ΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ /home/bozo/projects/Makefile).

Π’ арифмСтичСских опСрациях -- это ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ дСлСния.

`

ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄. [ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ] ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для записи Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ `command`.

:

пустая ΠΊΠΎΠΌΠ°Π½Π΄Π°. [Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅] Π­Ρ‚ΠΎ эквивалСнт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ "NOP" (no op, Π½Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ). ΠœΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ синоним встроСнной ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ true. Команда ":" Ρ‚Π°ΠΊ ΠΆΠ΅ являСтся встроСнной ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Bash, которая всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ "true" (0).

:

echo $? # 0


БСсконСчный Ρ†ΠΈΠΊΠ»:

while :

do

operation-1

operation-2

...

operation-n

done


# Во ТС самоС:

# while true

# do

# ...

# done


Π‘ΠΈΠΌΠ²ΠΎΠ»-Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ Π² условном ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ if/then:

if condition

then : # Никаких дСйствий Π½Π΅ производится ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся дальшС

else

take-some-action

fi


Как символ-Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ Π² опСрациях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΄Π²ΡƒΡ… ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ², см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 8-2 ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

: ${username=`whoami`}

# ${username=`whoami`} Π±Π΅Π· символа : Π²Ρ‹Π΄Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ошибкС,

# Ссли "username" Π½Π΅ являСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ...


Как символ-Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π‘ΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 17-9.

Π’ опСрациях с подстановкой ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9-13).

: ${HOSTNAME?} ${USER?} ${MAIL?}

#Π’Ρ‹Π²ΠΎΠ΄ сообщСния ΠΎΠ± ошибкС, Ссли ΠΎΠ΄Π½Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹.


Π’ опСрациях Π·Π°ΠΌΠ΅Π½Ρ‹ подстроки с подстановкой Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π’ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ > (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ пСрСнаправлСния Π²Ρ‹Π²ΠΎΠ΄Π°), усСкаСт Π΄Π»ΠΈΠ½Ρƒ Ρ„Π°ΠΉΠ»Π° Π΄ΠΎ нуля. Если ΡƒΠΊΠ°Π·Π°Π½ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» -- Ρ‚ΠΎ ΠΎΠ½ создаСтся.

: > data.xxx # Π€Π°ΠΉΠ» "data.xxx" -- пуст


# Π’ΠΎΡ‚ ΠΆΠ΅ эффСкт ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° cat /dev/null >data.xxx

# Однако Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π΅ производится созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ процСсса, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ":" являСтся встроСнной ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.

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

Π’ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ >> -- ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ пСрСнаправлСния с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ послСднСго доступа (: >> new_file). Если Π·Π°Π΄Π°Π½ΠΎ имя Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π°, Ρ‚ΠΎ ΠΎΠ½ создаСтся. Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ touch.

Π’Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈ Π½Π΅ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΊ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°ΠΌ, символичСским ссылкам ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ.

Π‘ΠΈΠΌΠ²ΠΎΠ» : ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для создания ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², хотя ΠΈ Π½Π΅ рСкомСндуСтся. Если строка коммСнтария начинаСтся с символа #, Ρ‚ΠΎ такая строка Π½Π΅ провСряСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ошибок. Однако Π² случаС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° : это Π½Π΅ Ρ‚Π°ΠΊ.

: Π­Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ сообщСниС ΠΎΠ± ошибкС, ( if [ $x -eq 3] ).


Π‘ΠΈΠΌΠ²ΠΎΠ» ":" ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎΠ»Π΅ΠΉ Π² /etc/passwd ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $PATH.

bash$ echo $PATH

/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/games


!

инвСрсия (ΠΈΠ»ΠΈ логичСскоС ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Π² условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ! ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½. (см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 6-2). Π’Π°ΠΊ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для логичСского отрицания Π² опСрациях сравнСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, опСрация сравнСния "Ρ€Π°Π²Π½ΠΎ" ( = ), ΠΏΡ€ΠΈ использовании ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° отрицания, прСобразуСтся Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ сравнСния -- "Π½Π΅ Ρ€Π°Π²Π½ΠΎ" ( != ). Π‘ΠΈΠΌΠ²ΠΎΠ» ! являСтся Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом BASH.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях символ ! ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для косвСнного обращСния ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ! запускаСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ историй Bash (см. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ F). ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ нСдоступСн ΠΈΠ· сцСнариСв (Ρ‚.Π΅. ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки).

*

символ-шаблон. [Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ°] Π‘ΠΈΠΌΠ²ΠΎΠ» * слуТит "шаблоном" для подстановки Π² ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ². ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ символ * ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ любоС имя Ρ„Π°ΠΉΠ»Π° Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅.

bash$ echo *

abs-book.sgml add-drive.sh agram.sh alias.sh


Π’ рСгулярных выраТСниях Ρ‚ΠΎΠΊΠ΅Π½ * прСдставляСт любоС количСство (Π² Ρ‚ΠΎΠΌ числС ΠΈ 0) символов.

*

арифмСтичСский ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Π’ арифмСтичСских выраТСниях символ * ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ умноТСния.

Двойная Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° (Π΄Π²Π° символа Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΈ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… подряд Π΄Ρ€ΡƒΠ³ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ -- **), ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ возвСдСния Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ.

?

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условия. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выраТСниях символ ? слуТит для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ выполнСния условия.

Π’ конструкциях с Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ скобками, символ ? ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ трСхмСстному ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ языка C. Π‘ΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9-28.

Π’ выраТСниях с подстановкой ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, символ ? провСряСт -- установлСна Π»ΠΈ пСрСмСнная.

?

сивол-шаблон. Π‘ΠΈΠΌΠ²ΠΎΠ» ? ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ символ ΠΏΡ€ΠΈ подстановкС Π² ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ рСгулярных выраТСниях слуТит для обозначСния ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ³ΠΎ символа.

$

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

var1=5

var2=23skidoo


echo $var1 # 5

echo $var2 # 23skidoo


Π‘ΠΈΠΌΠ²ΠΎΠ» $, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

$

end-of-line (ΠΊΠΎΠ½Π΅Ρ† строки). Π’ рСгулярных выраТСниях, символ "$" ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ† строки.

${}

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

$*, [email protected]

ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

$?

ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ $? Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ послСднСй Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ сцСнария.

$$

id процСсса. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ $$ Ρ…Ρ€Π°Π½ΠΈΡ‚ id процСсса сцСнария.

()

Π³Ρ€ΡƒΠΏΠΏΠ° ΠΊΠΎΠΌΠ°Π½Π΄.

(a=hello; echo $a)


ΠšΠΎΠΌΠ°Π½Π΄Ρ‹, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ процСссС -- subshell-Π΅.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, создаваСмыС Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ процСссС Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹ Π² "Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ" сцСнарии. Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ процСсс-сцСнарий, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, создаваСмым Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ процСссС.

a=123

( a=321; )


echo "a = $a" # a = 123

# пСрСмСнная "a" Π² скобках ΠΏΠΎΠ΄ΠΎΠ±Π½Π° локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.


инициализация массивов.

Array=(element1 element2 element3)


{xxx,yyy,zzz,...}

Π€ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки.

grep Linux file*.{txt,htm*}

# Поиск всСх Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ слова "Linux"

# Π² Ρ„Π°ΠΉΠ»Π°Ρ… "fileA.txt", "file2.txt", "fileR.html", "file-87.htm", ΠΈ ΠΏΡ€.


Команда интСрпрСтируСтся ΠΊΠ°ΠΊ список ΠΊΠΎΠΌΠ°Π½Π΄, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой, с вариациями, прСдставлСнными Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках.[ 11 ] ΠŸΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² (подстановка) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки.

ИспользованиС нСэкранированных ΠΈΠ»ΠΈ Π½Π΅ΠΎΠΊΠ°Π²Ρ‹Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок нСдопустимо.

echo {file1,file2}\ :{\ A," B",' C'}

file1 : A file1 : B file1 : C file2 : A file2 : B file2 : C

{}

Π‘Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°. [Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки] Π˜Π·Π²Π΅ΡΡ‚Π΅Π½ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ "Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ", эта конструкция, фактичСски, создаСт Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Однако, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, создаваСмыС Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠ°Ρ… ΠΊΠΎΠ΄Π°, доступны ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰Π΅ΠΌΡƒ ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ.

bash$ { local a; a=123; }

bash: local: can only be used in a function


a=123

{ a=321; }

echo "a = $a" # a = 321 (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, присвоСнноС Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π°)


# Бпасибо, S.C.


Код, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3-1. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

#!/bin/bash

# Π§Ρ‚Π΅Π½ΠΈΠ΅ строк ΠΈΠ· Ρ„Π°ΠΉΠ»Π° /etc/fstab.