ΠΡΠΈΠΌΠ΅Ρ 25-3. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
#!/bin/bash
declare -a colors
# ΠΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°.
echo "ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π²Π°ΡΠΈ Π»ΡΠ±ΠΈΠΌΡΠ΅ ΡΠ²Π΅ΡΠ° (ΡΠ°Π·Π΄Π΅Π»ΡΡ ΠΈΡ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ)."
read -a colors # ΠΠ²Π΅Π΄ΠΈΡΠ΅ Ρ ΠΎΡΡ Π±Ρ 3 ΡΠ²Π΅ΡΠ° Π΄Π»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ².
# Π‘ΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠ»ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ 'read',
#+ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π²Π²ΠΎΠ΄ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°.
echo
element_count=${#colors[@]}
# ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅.
# element_count=${#colors[*]} -- Π΄Π°Π΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
#
# ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ "@" ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ "ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ" ΡΡΡΠΎΠΊΡ Π² ΠΊΠ°Π²ΡΡΠΊΠ°Ρ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ»ΠΎΠ²Π°
#+ (Π²ΡΠ΄Π΅Π»ΡΡΡΡΡ ΡΠ»ΠΎΠ²Π°, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ).
index=0
while [ "$index" -lt "$element_count" ]
do # Π‘ΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅.
echo ${colors[$index]}
let "index = $index + 1"
done
# ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅.
# ΠΡΠ»ΠΈ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ echo -n "${colors[$index]} "
#
# ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΉ ΡΠΈΠΊΠ» "for":
# for i in "${colors[@]}"
# do
# echo "$i"
# done
# (Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ S.C.)
echo
# ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½, Π±ΠΎΠ»Π΅Π΅ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΡΠΉ, ΡΠΏΠΎΡΠΎΠ± Π²ΡΠ²ΠΎΠ΄Π° ΡΠΏΠΈΡΠΊΠ° Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°.
echo ${colors[@]} # ${colors[*]} Π΄Π°Π΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
echo
# ΠΠΎΠΌΠ°Π½Π΄Π° "unset" ΡΠ΄Π°Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΠΈΠΊΠΎΠΌ.
unset colors[1] # Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ 2-Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°.
# Π’ΠΎΡ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡ Π΄Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° colors[1]=
echo ${colors[@]} # Π‘ΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° -- 2-ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ.
unset colors # Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
# Π’ΠΎΡ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡ ΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ unset colors[*]
#+ ΠΈ unset colors[@].
echo; echo -n "ΠΠ°ΡΡΠΈΠ² ΡΠ²Π΅ΡΠΎΠ² ΠΎΠΏΡΡΡΠΎΡΠ΅Π½."
echo ${colors[@]} # Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΡΡ.
exit 0
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ${array_name[@]} ΠΈΠ»ΠΈ ${array_name[*]} ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ${#array_name[@]} ΠΈΠ»ΠΈ ΠΊ ${#array_name[*]}. ${#array_name} -- ΡΡΠΎ Π΄Π»ΠΈΠ½Π° (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²) ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°, Ρ.Π΅. ${array_name[0]}.
ΠΡΠΈΠΌΠ΅Ρ 25-4. ΠΡΡΡΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ ΠΏΡΡΡΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ
#!/bin/bash
# empty-array.sh
# ΠΡΡΠ°ΠΆΠ°Ρ ΡΠ²ΠΎΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΡ Stephane Chazelas Π·Π° ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ,
#+ ΠΈ Michael Zick Π·Π° Π΅Π³ΠΎ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΡ.
# ΠΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² -- ΡΡΠΎ Π½Π΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΏΡΡΡΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
array0=( ΠΏΠ΅ΡΠ²ΡΠΉ Π²ΡΠΎΡΠΎΠΉ ΡΡΠ΅ΡΠΈΠΉ )
array1=( '' ) # "array1" ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΏΡΡΡΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ.
array2=( ) # ΠΠ°ΡΡΠΈΠ² "array2" Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, Ρ.Π΅. ΠΏΡΡΡ.
echo
ListArray()
{
echo
echo "ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° array0: ${array0[@]}"
echo "ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° array1: ${array1[@]}"
echo "ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° array2: ${array2[@]}"
echo
echo "ΠΠ»ΠΈΠ½Π° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° array0 = ${#array0}"
echo "ΠΠ»ΠΈΠ½Π° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° array1 = ${#array1}"
echo "ΠΠ»ΠΈΠ½Π° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° array2 = ${#array2}"
echo
echo "Π§ΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ array0 = ${#array0[*]}" # 3
echo "Π§ΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ array1 = ${#array1[*]}" # 1 (ΡΡΡΠΏΡΠΈΠ·!)
echo "Π§ΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ array2 = ${#array2[*]}" # 0
}
# ===================================================================
ListArray
# ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Ρ
# ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Ρ.
array0=( "${array0[@]}" "Π½ΠΎΠ²ΡΠΉ1" )
array1=( "${array1[@]}" "Π½ΠΎΠ²ΡΠΉ1" )
array2=( "${array2[@]}" "Π½ΠΎΠ²ΡΠΉ1" )
ListArray
# ΠΈΠ»ΠΈ
array0[${#array0[*]}]="Π½ΠΎΠ²ΡΠΉ2"
array1[${#array1[*]}]="Π½ΠΎΠ²ΡΠΉ2"
array2[${#array2[*]}]="Π½ΠΎΠ²ΡΠΉ2"
ListArray
# Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΊΠ°ΠΊ 'ΡΡΠ΅ΠΊ' ('stack')
# ΠΠΎΠΌΠ°Π½Π΄Ρ Π²ΡΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ 'push' -- Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° Π²Π΅ΡΡΠΈΠ½Ρ ΡΡΠ΅ΠΊΠ°
# 'ΠΠ»ΡΠ±ΠΈΠ½Π°' ΡΡΠ΅ΠΊΠ°:
height=${#array2[@]}
echo
echo "ΠΠ»ΡΠ±ΠΈΠ½Π° ΡΡΠ΅ΠΊΠ° array2 = $height"
# ΠΠΎΠΌΠ°Π½Π΄Π° 'pop' -- Π²ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΡΠ΅ΠΊΠ°, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎΡΡ Π½Π° Π²Π΅ΡΡΠΈΠ½Π΅:
unset array2[${#array2[@]}-1] # ΠΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π½ΡΠ»Ρ
height=${#array2[@]}
echo
echo "POP"
echo "ΠΠ»ΡΠ±ΠΈΠ½Π° ΡΡΠ΅ΠΊΠ° array2, ΠΏΠΎΡΠ»Π΅ Π²ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π½ΠΈΡ = $height"
ListArray
# ΠΡΠ²Π΅ΡΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ 2-ΠΉ ΠΈ 3-ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° array0
from=1 # ΠΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π½ΡΠ»Ρ
to=2 #
declare -a array3=( ${array0[@]:1:2} )
echo
echo "ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° array3: ${array3[@]}"
# ΠΠ°ΠΌΠ΅Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ
declare -a array4=( ${array0[@]/Π²ΡΠΎΡΠΎΠΉ/2-ΠΉ} )
echo
echo "ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° array4: ${array4[@]}"
# ΠΠ°ΠΌΠ΅Π½Π° ΡΡΡΠΎΠΊ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ
declare -a array5=( ${array0[@]//Π½ΠΎΠ²ΡΠΉ?/ΡΡΠ°ΡΡΠΉ} )
echo
echo "ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° array5: ${array5[@]}"
# ΠΠ°Π΄ΠΎ Π»ΠΈΡΡ ΠΏΡΠΈΠ²ΡΠΊΠ½ΡΡΡ ΠΊ ΡΠ°ΠΊΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ...
declare -a array6=( ${array0[@]#*Π½ΠΎΠ²ΡΠΉ} )
echo # ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²Π°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΄ΠΈΠ²ΠΈΡΡ
echo "ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° array6: ${array6[@]}"
declare -a array7=( ${array0[@]#Π½ΠΎΠ²ΡΠΉ1} )
echo # Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠΎ Π²Π°Ρ ΡΠΆΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ΄ΠΈΠ²Π»ΡΡΡ
echo "ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° array7: ${array7[@]}"
# ΠΡΠ³Π»ΡΠ΄ΠΈΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ...
declare -a array8=( ${array0[@]/Π½ΠΎΠ²ΡΠΉ1/} )
echo
echo "ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° array8: ${array8[@]}"
# ΠΡΠ°ΠΊ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΠΎΠ±ΠΎ Π²ΡΠ΅ΠΌ ΡΡΠΎΠΌ?
# Π‘ΡΡΠΎΠΊΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π°Π΄ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ
#+ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ var[@].
# Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, BASH ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²Π΅ΠΊΡΠΎΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
# ΠΡΠ»ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ°, ΡΠΎ
#+ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° "ΠΈΡΡΠ΅Π·Π°Π΅Ρ".
# ΠΠΎΠΏΡΠΎΡ: ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΡΡΠΎΠΊΠ°ΠΌ Π² "ΡΡΡΠΎΠ³ΠΈΡ " ΠΈΠ»ΠΈ "ΠΌΡΠ³ΠΊΠΈΡ " ΠΊΠ°Π²ΡΡΠΊΠ°Ρ ?
zap='Π½ΠΎΠ²ΡΠΉ*'
declare -a array9=( ${array0[@]/$zap/} )
echo
echo "ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° array9: ${array9[@]}"
# "...Π Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π³ΠΎΠ²ΠΎΡΡΡ: "ΠΡΠΎ Π³ΠΎΡΠΎΠ΄ ΠΠ΅Π½ΠΈΠ½Π³ΡΠ°Π΄!"..."
declare -a array10=( ${array0[@]#$zap} )
echo
echo "ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° array10: ${array10[@]}"
# Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ array7 ΠΈ array10
# Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ array8 ΠΈ array9
# ΠΡΠ²Π΅Ρ: Π² "ΠΌΡΠ³ΠΊΠΈΡ " ΠΊΠ°Π²ΡΡΠΊΠ°Ρ .
exit 0
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ${array_name[@]} ΠΈ ${array_name[*]} ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΠ΅ΠΆΠ΄Ρ [email protected] ΠΈ $*. ΠΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΡΠΈΡΠΎΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅.
# ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ².
array2=( "${array1[@]}" )
# ΠΈΠ»ΠΈ
array2="${array1[@]}"
# ΠΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ.
array=( "${array[@]}" "Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ" )
# ΠΈΠ»ΠΈ
array[${#array[*]}]="Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ"
# Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ S.C.
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ -- array=( element1 element2 ... elementN ), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Ρ.
#!/bin/bash
filename=sample_file
# cat sample_file
#
# 1 a b c
# 2 d e fg
declare -a array1
array1=( `cat "$filename" | tr '\n' ' '`) # ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
# $filename Π² ΠΌΠ°ΡΡΠΈΠ² array1.
# ΠΡΠ²ΠΎΠ΄ Π½Π° stdout.
# Ρ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ Π½Π° ΠΏΡΠΎΠ±Π΅Π»Ρ.
echo ${array1[@]} # ΡΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°.
# 1 a b c 2 d e fg
#
# ΠΠ°ΠΆΠ΄ΠΎΠ΅ "ΡΠ»ΠΎΠ²ΠΎ", Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, ΠΎΡΠ΄Π΅Π»ΡΠ΅ΠΌΠΎΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ
#+ Π·Π°Π½ΠΎΡΠΈΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π°.
element_count=${#array1[*]}
echo $element_count # 8
ΠΡΠΈΠΌΠ΅Ρ 25-5. ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
#! /bin/bash
# CopyArray.sh
#
# ΠΠ²ΡΠΎΡ: Michael Zick.
# ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Ρ Π΅Π³ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ.
# "ΠΡΠΈΠ½ΡΡΡ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ² Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ"
#+ ΠΈΠ»ΠΈ "ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ".
CpArray_Mac() {
# ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ
echo -n 'eval '
echo -n "$2" # ΠΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Π°-ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°
echo -n '=( ${'
echo -n "$1" # ΠΠΌΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°
echo -n '[@]} )'
# ΠΡΠ΅ ΡΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΎ Π² ΠΎΠ΄Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
# ΠΡΠΎ Π»ΠΈΡΡ Π²ΠΎΠΏΡΠΎΡ ΡΡΠΈΠ»Ρ.
}
declare -f CopyArray # "Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ" Π½Π° ΡΡΠ½ΠΊΡΠΈΡ
CopyArray=CpArray_Mac # ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ
Hype()
{
# ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² $1.
# (Π‘Π»ΠΈΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ "-- ΠΠ°ΡΡΠΎΡΡΠΈΠΉ Π ΠΎΠΊ-Π½-Π ΠΎΠ»Π»".)
# ΠΠ΅ΡΠ½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ $2.
local -a TMP
local -a hype=( -- ΠΠ°ΡΡΠΎΡΡΠΈΠΉ Π ΠΎΠΊ-Π½-Π ΠΎΠ»Π» )
$($CopyArray $1 TMP)
TMP=( ${TMP[@]} ${hype[@]} )
$($CopyArray TMP $2)
}
declare -a before=( Advanced Bash Scripting )
declare -a after
echo "ΠΠ°ΡΡΠΈΠ² before = ${before[@]}"
Hype before after
echo "ΠΠ°ΡΡΠΈΠ² after = ${after[@]}"
# ΠΡΠ΅?
echo "Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ${after[@]:4:2}?"
declare -a modest=( ${after[@]:2:1} ${after[@]:3:3} )
# ---- Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ ----
echo "ΠΠ°ΡΡΠΈΠ² Modest = ${modest[@]}"
# Π ΡΡΠΎ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ 'before' ?
echo "ΠΠ°ΡΡΠΈΠ² Before = ${before[@]}"
exit 0
--
ΠΠ°ΡΡΠΈΠ²Ρ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ. Π₯ΠΎΡΠΎΡΠΎ Π»ΠΈ ΡΡΠΎ -- ΡΠ΅ΡΠ°ΡΡ Π²Π°ΠΌ.
ΠΡΠΈΠΌΠ΅Ρ 25-6. Π‘ΡΠ°ΡΠ°Ρ, Π΄ΠΎΠ±ΡΠ°Ρ: "ΠΡΠ·ΡΡΡΠΊΠΎΠ²Π°Ρ" ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°
#!/bin/bash
# bubble.sh: "ΠΡΠ·ΡΡΡΠΊΠΎΠ²Π°Ρ" ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°.
# ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠΎΡ ΠΎΠ΄Π΅ ΠΏΠΎ ΡΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Ρ,
#+ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π²Π° ΡΠΌΠ΅ΠΆΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΈ, Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΠΎΠ½ΠΈ ΠΌΠ΅Π½ΡΡΡΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ.
# Π ΠΊΠΎΠ½ΡΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡ ΠΎΠ΄Π°, ΡΠ°ΠΌΡΠΉ "ΡΡΠΆΠ΅Π»ΡΠΉ" ΡΠ»Π΅ΠΌΠ΅Π½Ρ "ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ" Π² ΠΊΠΎΠ½Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π°.
# Π ΠΊΠΎΠ½ΡΠ΅ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΎΡ ΠΎΠ΄Π°, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΠΎ "ΡΡΠΆΠ΅ΡΡΠΈ" ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠΎΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ ΡΠ½ΠΈΠ·Ρ.
# Π ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
# ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΎΡ ΠΎΠ΄ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π° ΠΎΠ΄Π½ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ.
# ΠΠΎΡΡΠΎΠΌΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΡΠΎΡ ΠΎΠ΄Π°Ρ .
exchange()
{
# ΠΠΎΠΌΠ΅Π½ΡΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π΄Π²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°.
local temp=${Countries[$1]} # ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ
Countries[$1]=${Countries[$2]}
Countries[$2]=$temp