${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).