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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Командная строка LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 109

Автор Шоттс Уильям

[[email protected] ~]$ bc <<< "2+2"

4

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ сцСнария

Π’ качСствС практичСского ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° сконструируСм сцСнарий, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰ΠΈΠΉ сумму СТСмСсячных ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ ΠΏΠΎ ΠΊΡ€Π΅Π΄ΠΈΡ‚Ρƒ. Для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сцСнария ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ bc Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ встроСнный Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚:

#!/bin/bash

# loan-calc : сцСнарий вычислСния суммы СТСмСсячных ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ ΠΏΠΎ ΠΊΡ€Π΅Π΄ΠΈΡ‚Ρƒ

PROGNAME=$(basename $0)

usage () {

Β Β Β Β Β Β Β Β cat <<- EOF

Β Β Β Β Β Β Β Β Usage: $PROGNAME PRINCIPAL INTEREST MONTHS

Β Β Β Β Β Β Β Β Where:

Β Β Β Β Β Β Β Β PRINCIPAL is the amount of the loan.

Β Β Β Β Β Β Β Β INTEREST is the APR as a number (7% = 0.07).

Β Β Β Β Β Β Β Β MONTHS is the length of the loan's term.

Β Β Β Β Β Β Β Β EOF

}

if (($# != 3)); then

Β Β Β Β Β Β Β Β usage

Β Β Β Β Β Β Β Β exit 1

fi

principal=$1

interest=$2

months=$3

bc <<- EOF

Β Β Β Β Β Β Β Β scale = 10

Β Β Β Β Β Β Β Β i = $interest / 12

Β Β Β Β Β Β Β Β p = $principal

Β Β Β Β Β Β Β Β n = $months

Β Β Β Β Β Β Β Β a = p * ((i * ((1 + i) ^ n)) / (((1 + i) ^ n) - 1))

Β Β Β Β Β Β Β Β print a, "\n"

EOF

Запустив этот сцСнарий, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

[[email protected] ~]$ loan-calc 135000 0.0775 180

1270.7222490000

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ вычисляСтся Ρ€Π°Π·ΠΌΠ΅Ρ€ СТСмСсячных ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ ΠΏΠΎ ΠΊΡ€Π΅Π΄ΠΈΡ‚Ρƒ Π½Π° сумму $135 000, Π²Ρ‹Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΠΎΠ΄ 7,75 % Π³ΠΎΠ΄ΠΎΠ²Ρ‹Ρ… Π½Π° 180 мСсяцСв (15 Π»Π΅Ρ‚). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Она опрСдСляСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ scale Π² сцСнарии Π½Π° языкС bc. ПолноС описаниС языка bc ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° справочной страницС (man) для bc. НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ° записи матСматичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ (bc большС Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ язык C), Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ сцСнария всС ΠΆΠ΅ выглядит достаточно понятной, учитывая всС, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΊ настоящСму ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ.

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ мноТСство ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… хитростСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² практичСской Ρ€Π°Π±ΠΎΡ‚Π΅. Π‘ ростом ΠΎΠΏΡ‹Ρ‚Π° Π² создании сцСнариСв ΡƒΠΌΠ΅Π½ΠΈΠ΅ эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со строками ΠΈ числами ΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ ΠΈΡΡ‚ΠΈΠ½Π½ΡƒΡŽ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ. Наш сцСнарий loan-calc ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ простыС сцСнарии ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ вычислСния.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния

Π”Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сцСнарий loan-calc Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΎΠ½ Π΄Π°Π»Π΅ΠΊ ΠΎΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²Π°. Π’ качСствС ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ упраТнСния ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ сцСнарий loan-calc, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ возмоТности:

β€’ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки;

β€’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ Β«ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉΒ» Ρ€Π΅ΠΆΠΈΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сцСнарий Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ суммы, ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° ΠΈ срока ΠΊΡ€Π΅Π΄ΠΈΡ‚Π°;

β€’ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π°.

35. ΠœΠ°ΡΡΠΈΠ²Ρ‹

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ со строками ΠΈ числами. Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ рассматривали Π΄ΠΎ сих ΠΏΠΎΡ€, Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΊΡ€ΡƒΠ³Π°Ρ… извСстны ΠΊΠ°ΠΊ скалярныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, способныС Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ СдинствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ познакомимся Π΅Ρ‰Π΅ с ΠΎΠ΄Π½ΠΎΠΉ структурой Π΄Π°Π½Π½Ρ‹Ρ…, которая называСтся массивом, способной Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ практичСски Π²ΠΎ всСх языках программирования. Командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΡ…, хотя ΠΈ Π² нСсколько ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅. Но Π΄Π°ΠΆΠ΅ Π² этом случаС ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡ программирования.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массивы?

ΠœΠ°ΡΡΠΈΠ²Ρ‹ β€” это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, хранящиС Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. ЭлСктронная Ρ‚Π°Π±Π»ΠΈΡ†Π° дСйствуСт ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ массиву. Π’ Π½Π΅ΠΉ Π΅ΡΡ‚ΡŒ строки ΠΈ столбцы, ΠΈ каТдая ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ ячСйка ΠΈΠΌΠ΅Π΅Ρ‚ свой адрСс, опрСдСляСмый Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ строки ΠΈ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ столбца. Массив устроСн Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ. Массив состоит ΠΈΠ· ячССк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ элСмСнтами, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт содСрТит Π΄Π°Π½Π½Ρ‹Π΅. Доступ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ элСмСнту осущСствляСтся с использованиСм Π΅Π³ΠΎ адрСса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся индСксом.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ языков программирования ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы. ЭлСктронная Ρ‚Π°Π±Π»ΠΈΡ†Π° β€” это ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива с двумя измСрСниями: ΡˆΠΈΡ€ΠΈΠ½Π° ΠΈ высота. МногиС языки ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ массивы с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ числом ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Ρ‡Π°Ρ‰Π΅ всСго, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²ΡƒΡ…- ΠΈ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² bash ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ СдинствСнным ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ элСктронныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с СдинствСнным столбцом. Но Π΄Π°ΠΆΠ΅ с этим ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ массивам ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ массу ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° массивов появилась Π² bash вСрсии 2. ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Unix sh Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π° ΠΈΡ….

БозданиС массива

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ-массивам ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π°, Ρ‡Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ bash, ΠΈ ΠΎΠ½ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ автоматичСски ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½ΠΈΠΌ. НапримСр:

[[email protected] ~]$ a[1]=foo

[[email protected] ~]$ echo ${a[1]}

foo

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ присваивания значСния элСмСнту массива ΠΈ обращСния ΠΊ Π½Π΅ΠΌΡƒ. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° присваиваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ foo элСмСнту массива a с индСксом 1. Вторая ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, хранящССся Π² элСмСнтС с индСксом 1. ИспользованиС Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ условиСм, ΠΈΠ½Π°Ρ‡Π΅ команд­ная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ подстановку ΠΏΡƒΡ‚ΠΈ, ΠΎΠΏΠΈΡ€Π°ΡΡΡŒ Π½Π° имя элСмСнта массива.

Массив ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ declare:

[[email protected] ~]$ declare -a a

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -a Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ declare ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив (array) с ΠΈΠΌΠ΅Π½Π΅ΠΌ a.

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массиву

ЗначСния элСмСнтам массивов ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… способов. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ осущСствляСтся с использованиСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ синтаксиса:

имя[индСкс]=Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π³Π΄Π΅ имя β€” это имя массива, индСкс β€” Ρ†Π΅Π»ΠΎΠ΅ число (ΠΈΠ»ΠΈ арифмСтичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅) большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎΠ΅ 0. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива ΠΈΠΌΠ΅Π΅Ρ‚ индСкс 0, Π° Π½Π΅ 1. Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” строка ΠΈΠ»ΠΈ Ρ†Π΅Π»ΠΎΠ΅ число, присваиваСмоС элСмСнту массива.

ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ сразу мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ с использованиСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ синтаксиса:

имя=(Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅1Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅2 ...)

Π³Π΄Π΅ имя β€” это имя массива, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅1 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅1 ... β€” значСния, присваиваСмыС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтам массива, начиная с элСмСнта с индСксом 0. НапримСр, Ссли понадобится ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ элСмСнтам массива days сокращСнныС названия Π΄Π½Π΅ΠΉ Π½Π΅Π΄Π΅Π»ΠΈ, это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

[[email protected] ~]$ days=(Sun Mon Tue Wed Thu Fri Sat)

МоТно ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ значСния ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ элСмСнтам, указывая индСкс для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния:

[[email protected] ~]$ days=([0]=Sun [1]=Mon [2]=Tue [3]=Wed [4]=Thu [5]=Fri [6]=Sat)

Доступ ΠΊ элСмСнтам массива

Π˜Ρ‚Π°ΠΊ, Π³Π΄Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ массивы? Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒΡΡ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ элСктронных Ρ‚Π°Π±Π»ΠΈΡ†, массивы ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ мноТСства Π·Π°Π΄Π°Ρ‡ программирования.

Рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сбора ΠΈ прСдставлСния Π΄Π°Π½Π½Ρ‹Ρ…. НапишСм сцСнарий, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΉ врСмя послСднСго измСнСния Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. На основС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… сцСнарий Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ, сколько Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ час суток. Π’Π°ΠΊΠΎΠΉ сцСнарий ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для выяснСния ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΎΠ² наибольшСй активности систСмы. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ hours ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

[[email protected] ~]$ hours .

HourΒ Β Β Β FilesΒ Β Β Β HourΒ Β Β Β Files

----Β Β Β Β -----Β Β Β Β ----Β Β Β Β -----

00Β Β Β Β Β Β 0Β Β Β Β Β Β Β Β 12Β Β Β Β Β Β 11

01Β Β Β Β Β Β 1Β Β Β Β Β Β Β Β 13Β Β Β Β Β Β 7

02Β Β Β Β Β Β 0Β Β Β Β Β Β Β Β 14Β Β Β Β Β Β 1

03Β Β Β Β Β Β 0Β Β Β Β Β Β Β Β 15Β Β Β Β Β Β 7

04Β Β Β Β Β Β 1Β Β Β Β Β Β Β Β 16Β Β Β Β Β Β 6

05Β Β Β Β Β Β 1Β Β Β Β Β Β Β Β 17Β Β Β Β Β Β 5

06Β Β Β Β Β Β 6Β Β Β Β Β Β Β Β 18Β Β Β Β Β Β 4

07Β Β Β Β Β Β 3Β Β Β Β Β Β Β Β 19Β Β Β Β Β Β 4

08Β Β Β Β Β Β 1Β Β Β Β Β Β Β Β 20Β Β Β Β Β Β 1

09Β Β Β Β Β Β 14Β Β Β Β Β Β Β 21Β Β Β Β Β Β 0