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

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

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

${parameter}

Π’ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ $parameter, Ρ‚.Π΅. Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ parameter. Π’ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях, ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ нСоднозначности ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ такая Ρ„ΠΎΡ€ΠΌΠ° записи: ${parameter}.

ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ (слияния) строковых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

your_id=${USER}-on-${HOSTNAME}

echo "$your_id"

#

echo "Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ \$PATH = $PATH"

PATH=${PATH}:/opt/bin #Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ /opt/bin Π² $PATH.

echo "Новый \$PATH = $PATH"


${parameter-default}, ${parameter:-default}

Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ отсутствуСт, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

echo ${username-`whoami`}

# Π’Ρ‹Π²ΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ `whoami`, Ссли пСрСмСнная $username Π½Π΅ установлСна.


Π€ΠΎΡ€ΠΌΡ‹ записи ${parameter-default} ΠΈ ${parameter:-default} Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ эквивалСнтными. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ символ : ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° parameter ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ "пустоС" (null) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

#!/bin/bash


username0=

# пСрСмСнная username0 объявлСна, Π½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° "пустым" Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

echo "username0 = ${username0-`whoami`}"

# Π’Ρ‹Π²ΠΎΠ΄ послС символа "=" отсутствуСт.


echo "username1 = ${username1-`whoami`}"

# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ username1 Π½Π΅ Π±Ρ‹Π»Π° объявлСна.

# Выводится имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π²Ρ‹Π΄Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ `whoami`.


username2=

# пСрСмСнная username2 объявлСна, Π½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° "пустым" Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

echo "username2 = ${username2:-`whoami`}"

# Выводится имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π²Ρ‹Π΄Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ `whoami`, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ

#+здСсь употрСбляСтся конструкция ":-" , Π° Π½Π΅ "-".


exit 0


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ‡Π΅Π½ΡŒ часто находят ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² случаях, ΠΊΠΎΠ³Π΄Π° ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΠΊΠ°ΠΊΠΈΠ΅ Π»ΠΈΠ±ΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹.

DEFAULT_FILENAME=generic.data

filename=${1:-$DEFAULT_FILENAME}

# Если имя Ρ„Π°ΠΉΠ»Π° Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ явно, Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ

#+ с Ρ„Π°ΠΉΠ»ΠΎΠΌ "generic.data".

#


см. Ρ‚Π°ΠΊ ΠΆΠ΅ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3-4, ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 28-2 ΠΈ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ A-7.

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ списков and list, для задания ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ .

${parameter=default}, ${parameter:=default}

Если значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½Π΅ Π·Π°Π΄Π°Π½Π°Π½Ρ‹ явно, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ значСния ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Оба ΠΌΠ΅Ρ‚ΠΎΠ΄Π° задания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ стСпСни ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹. Π‘ΠΈΠΌΠ²ΠΎΠ» : ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° $parameter Π±Ρ‹Π» ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ "пустым" (null) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ[ 22 ], ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅.

echo ${username=`whoami`}

# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ "username" ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ `whoami`.


${parameter+alt_value}, ${parameter:+alt_value}

Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅ Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ alt_value, ΠΈΠ½Π°Ρ‡Π΅ -- null ("пустая" строка).

Оба Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ стСпСни ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹. Π‘ΠΈΠΌΠ²ΠΎΠ» : ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли parameter объявлСн ΠΈ "пустой", см. Π½ΠΈΠΆΠ΅.

echo "###### \${parameter+alt_value} ########"

echo


a=${param1+xyz}

echo "a = $a" # a =


param2=

a=${param2+xyz}

echo "a = $a" # a = xyz


param3=123

a=${param3+xyz}

echo "a = $a" # a = xyz


echo

echo "###### \${parameter:+alt_value} ########"

echo


a=${param4:+xyz}

echo "a = $a" # a =


param5=

a=${param5:+xyz}

echo "a = $a" # a =

# Π’Ρ‹Π²ΠΎΠ΄ отличаСтся ΠΎΡ‚ a=${param5+xyz}


param6=123

a=${param6+xyz}

echo "a = $a" # a = xyz


${parameter?err_msg}, ${parameter:?err_msg}

Если parameter ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС -- выводится err_msg.

ОбС Ρ„ΠΎΡ€ΠΌΡ‹ записи ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ стСпСни, ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ. Π‘ΠΈΠΌΠ²ΠΎΠ» : ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° parameter ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ "пустым" Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, см. Π½ΠΈΠΆΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9-13. ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…

#!/bin/bash


# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния.

# Если пСрСмСнная, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ $USER, Π½Π΅ установлСна,

#+ Ρ‚ΠΎ выводится сообщСниС ΠΎΠ± ошибкС.


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

echo

echo "Имя ΠΌΠ°ΡˆΠΈΠ½Ρ‹: $HOSTNAME."

echo "Π’Π°ΡˆΠ΅ имя: $USER."

echo "Π’Π°Ρˆ домашний ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³: $HOME."

echo "Π’Π°Ρˆ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик: $MAIL."

echo

echo "Если ΠΏΠ΅Ρ€Π΅Π΄ Π’Π°ΠΌΠΈ появилось это сообщСниС,"

echo "Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ всС критичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния установлСны."

echo

echo


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


# ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ${variablename?} Ρ‚Π°ΠΊ ΠΆΠ΅ выполняСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ

#+ наличия ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² сцСнарии.


ThisVariable=Value-of-ThisVariable

# ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π² строковыС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ записаны

#+ символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΈΠΌΠ΅Π½Π°Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

: ${ThisVariable?}

echo "Value of ThisVariable is $ThisVariable".

echo

echo


: ${ZZXy23AB?"ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ZZXy23AB Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°."}

# Если ZZXy23AB Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°,

#+ Ρ‚ΠΎ сцСнарий Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ с сообщСниСм ΠΎΠ± ошибкС.


# ВСкст сообщСния ΠΎΠ± ошибкС ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ свой.

# : ${ZZXy23AB?"ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ZZXy23AB Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°."}


# Во ТС самоС: dummy_variable=${ZZXy23AB?}

# dummy_variable=${ZZXy23AB?"ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ZXy23AB Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°."}

#

# echo ${ZZXy23AB?} >/dev/null


echo "Π­Ρ‚ΠΎ сообщСниС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сцСнарий Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ Ρ€Π°Π½ΡŒΡˆΠ΅."


HERE=0

exit $HERE # Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π΅ здСсь.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9-14. ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ сообщСниС ΠΎ "порядкС использования"

#!/bin/bash

# usage-message.sh


: ${1?"ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ использования: $0 ARGUMENT"}

# Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ здСсь, Ссли Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚,

#+ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ сообщСниСм.

# usage-message.sh: 1: ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ использования: usage-message.sh ARGUMENT


echo "Π­Ρ‚ΠΈ Π΄Π²Π΅ строки появятся, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π·Π°Π΄Π°Π½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС."

echo "Π’Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки = \"$1\""


exit 0 # Π’ΠΎΡ‡ΠΊΠ° Π²Ρ‹Ρ…ΠΎΠ΄Π° находится здСсь, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π·Π°Π΄Π°Π½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.


# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π² ΠΎΠ±Π΅ΠΈΡ… случаях, с ΠΈ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

# Если Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π·Π°Π΄Π°Π½, Ρ‚ΠΎ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ 0.

# Π˜Π½Π°Ρ‡Π΅ -- 1.

ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ/ΠΈΠ»ΠΈ экспансия. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ выраТСния ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ дополнСниями ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° match ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ expr, примСняСмой ΠΊ строкам (см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 12-6). Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π·Π±ΠΎΡ€Π΅ ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ².

Π”Π»ΠΈΠ½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ / Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ подстроки

${#var}

String length (число символов Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $var). Π’ случаС массивов, ΠΊΠΎΠΌΠ°Π½Π΄Π° ${#array} Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта массива.

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

ο‚· ${#*} ΠΈ ${#@} Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²).

ο‚· Для массивов, ${#array[*]} ΠΈ ${#array[@]} Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство элСмСнтов Π² массивС.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9-15. Π”Π»ΠΈΠ½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

#!/bin/bash

# length.sh


E_NO_ARGS=65


if [ $# -eq 0 ] # Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.

then

echo "Π’Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ сцСнарий с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки."

exit $E_NO_ARGS

fi


var01=abcdEFGH28ij


echo "var01 = ${var01}"

echo "Length of var01 = ${#var01}"


echo "ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² = ${#@}"

echo "ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² = ${#*}"


exit 0

${var#Pattern}, ${var##Pattern}

УдаляСт ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $var Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ/Π½Π°ΠΈΠ±ΠΎΠ»ΡŒΡˆΡƒΡŽ подстроку, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΡƒΡŽ с шаблоном $Pattern. Поиск вСдСтся с Π½Π°Ρ‡Π°Π»Π° строки $var.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΈΠ· ΠŸΡ€ΠΈΠΌΠ΅Ρ€ A-8:

# Ѐункцмя ΠΈΠ· сцСнария "days-between.sh".

# УдаляСт Π½ΡƒΠ»ΠΈ, стоящиС Π² Π½Π°Ρ‡Π°Π»Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°-строки.


strip_leading_zero () # Π’Π΅Π΄ΡƒΡ‰ΠΈΠ΅ Π½ΡƒΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ согут Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π½ΠΎΠΌΠ΅Ρ€Π΅ дня/мСсяца,

# Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ

val=${1#0} # Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Bash Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ числа

return $val # ΠΊΠ°ΠΊ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ (POSIX.2, sect 2.9.2.1).