Na-arụ ọrụ na Arrays na Linux Shell Scripting - Nkebi 8


Anyị enweghị ike iche n'echiche asụsụ mmemme na-enweghị echiche nke nhazi. Ọ baghị uru ka esi etinye ha n'ọrụ n'asụsụ dị iche iche. Kama usoro nhazi na-enyere anyị aka n'ịkwado data, nke yiri ya ma ọ bụ dị iche, n'okpuru otu aha ihe atụ.

Ebe a ka anyị na-eche banyere shei scripting, isiokwu a ga-enyere gị aka na-egwu gburugburu na ụfọdụ shei scripts nke na-eji nke a echiche nke arrays.

Usoro mmalite na ojiji

Site na ụdị bash ọhụrụ, ọ na-akwado arrays nwere otu akụkụ. Enwere ike ịkọwapụta nke ọma site na kwupụtashell-builtin.

declare -a var  

Mana ọ dịghị mkpa ikwupụta ụdị mgbanwe dị ka n'elu. Anyị nwere ike itinye ihe ndị dị n'otu n'otu iji hazie ozugbo dịka ndị a.

var[XX]=<value>

ebe 'XX' na-egosi nhazi nhazi. Iji debanye aha nhazi ihe na-eji syntax bracket curly, ya bụ.

${var[XX]}

Mara: Nhazi nhazi na-amalite mgbe niile na 0.

Ụzọ ọzọ dị mma isi bido n'usoro dum bụ site n'iji ụzọ mpakọ atọ dị ka egosiri n'okpuru.

var=( element1 element2 element3 . . . elementN )

A ka nwere ụzọ ọzọ e si ekenye ụkpụrụ n'usoro. Ụzọ mmalite a bụ akụkụ nke usoro akọwara mbụ.

array=( [XX]=<value> [XX]=<value> . . . )

Anyị nwekwara ike ịgụ/kenye ụkpụrụ n'usoro n'oge igbu oge site na iji agụ shell-builtin.

read -a array

Ugbu a na-emezu nkwupụta a dị n'elu n'ime edemede, ọ na-echere ntinye ụfọdụ. Anyị kwesịrị ịnye ihe ndị dị n'usoro kewapụrụ site na oghere (ọ bụghị nlọghachi ụgbọ ala). Mgbe ịbanyechara ụkpụrụ, pịa tinye ka ịkwụsị.

Iji gafere site n'usoro ihe anyị nwekwara ike iji maka loop.

for i in “${array[@]}”
do
	#access each element as $i. . .
done 

Edemede na-esonụ na-achịkọta ọdịnaya nke ngalaba a.

#!/bin/bash 

array1[0]=one 
array1[1]=1 
echo ${array1[0]} 
echo ${array1[1]} 

array2=( one two three ) 
echo ${array2[0]} 
echo ${array2[2]} 

array3=( [9]=nine [11]=11 ) 
echo ${array3[9]} 
echo ${array3[11]} 

read -a array4 
for i in "${array4[@]}" 
do 
	echo $i 
done 

exit 0

Ọtụtụ ọrụ eriri ọkọlọtọ na-arụ ọrụ n'usoro. Lelee edemede nlele na-esote nke na-arụ ọrụ ụfọdụ n'usoro (gụnyere arụmọrụ eriri).

#!/bin/bash 

array=( apple bat cat dog elephant frog ) 

#print first element 
echo ${array[0]} 
echo ${array:0} 

#display all elements 
echo ${array[@]} 
echo ${array[@]:0} 

#display all elements except first one 
echo ${array[@]:1} 

#display elements in a range 
echo ${array[@]:1:4} 

#length of first element 
echo ${#array[0]} 
echo ${#array} 

#number of elements 
echo ${#array[*]} 
echo ${#array[@]} 

#replacing substring 
echo ${array[@]//a/A} 

exit 0

Nke a bụ mmepụta ewepụtara na-eme ihe ederede dị n'elu.

apple 
apple 
apple bat cat dog elephant frog 
apple bat cat dog elephant frog 
bat cat dog elephant frog 
bat cat dog elephant 
5 
5 
6 
6 
Apple bAt cAt dog elephAnt frog

Echere m na ọ dịghị ihe ọ bụla dị mkpa na ịkọwa edemede a dị n'elu n'ụzọ zuru ezu dịka ọ na-akọwa onwe ya. Ọ bụrụ na ọ dị mkpa, m ga-enyefe otu akụkụ na usoro isiokwu a naanị na nhazi eriri.

Ngbanwe iwu na-ekenye mmepụta nke iwu ma ọ bụ ọtụtụ iwu n'ime ọnọdụ ọzọ. N'ebe a n'usoro nhazi a, anyị nwere ike itinye mmepụta nke iwu dị ka ihe dị iche iche nke nhazi. Syntax dị ka ndị a.

array=( $(command) )

Site na ndabara, a na-agbanye ọdịnaya dị na mmepụta iwu nke oghere ndị ọcha kewapụrụ n'usoro dị ka ihe n'otu n'otu. Edemede a na-edepụta ọdịnaya nke ndekọ aha, nke bụ faịlụ nwere ikike 755.

#!/bin/bash 

ERR=27 
EXT=0 

if [ $# -ne 1 ]; then 
	echo "Usage: $0 <path>" 
	exit $ERR 
fi 

if [ ! -d $1 ]; then 
	echo "Directory $1 doesn't exists" 
	exit $ERR 
fi 

temp=( $(find $1 -maxdepth 1 -type f) ) 

for i in "${temp[@]}" 
do 
	perm=$(ls -l $i) 
	if [ `expr ${perm:0:10} : "-rwxr-xr-x"` -eq 10 ]; then 
		echo ${i##*/} 
	fi 
done 

exit $EXT

Anyị nwere ike ịnọchite anya matriks nwere akụkụ abụọ n'ụzọ dị mfe site na iji nhazi akụkụ 1. Na ahiri isi usoroa na-eji nke nta nke nta na-echekwa ihe nnọchite anya n'ahịrị ọ bụla nke matriks n'usoro n'usoro n'usoro. Maka matrix mXn, enwere ike dee usoro maka otu ihe dị ka.

matrix[i][j]=array[n*i+j]

Lelee edemede ọzọ maka ịgbakwunye matrices 2 na ibipụta matriks na-arụpụta.

#!/bin/bash 

read -p "Enter the matrix order [mxn] : " t 
m=${t:0:1} 
n=${t:2:1} 

echo "Enter the elements for first matrix" 
for i in `seq 0 $(($m-1))` 
do 
	for j in `seq 0 $(($n-1))` 
	do 
		read x[$(($n*$i+$j))] 
	done 
done 

echo "Enter the elements for second matrix" 
for i in `seq 0 $(($m-1))` 
do 
	for j in `seq 0 $(($n-1))` 
	do 
		read y[$(($n*$i+$j))] 
		z[$(($n*$i+$j))]=$((${x[$(($n*$i+$j))]}+${y[$(($n*$i+$j))]})) 
	done 
done 

echo "Matrix after addition is" 
for i in `seq 0 $(($m-1))` 
do 
	for j in `seq 0 $(($n-1))` 
	do 
		echo -ne "${z[$(($n*$i+$j))]}\t" 
	done 
	echo -e "\n" 
done 

exit 0 

N'agbanyeghị na enwere oke maka mmejuputa usoro n'ime edemede shei, ọ na-aba uru n'ọnọdụ ole na ole, ọkachasị mgbe anyị ji ngbanwe iwu. N'ileghachi anya na nleba anya nhazi, echiche nke arrays mepere ụzọ maka mmepe nke ọtụtụ edemede ndabere na sistemụ GNU/Linux.