Yin aiki tare da Arrays a cikin Rubutun Shell na Linux - Sashe na 8
Ba za mu iya tunanin yaren shirye-shirye ba tare da manufar tsararraki ba. Ba kome ba yadda ake aiwatar da su a cikin harsuna daban-daban. Madadin haka tsararrun suna taimaka mana wajen haɓaka bayanai, kamanni ko daban-daban, ƙarƙashin suna ɗaya na alama.
Anan yayin da muke damuwa game da rubutun harsashi, wannan labarin zai taimaka muku wajen wasa tare da wasu rubutun harsashi waɗanda ke amfani da wannan ra'ayi na tsararru.
Ƙaddamarwar Array da Amfani
Tare da sabbin nau'ikan bash, yana goyan bayan tsararru mai girma ɗaya. Za a iya ayyana tsararru a sarari ta bayyana-builtin.
declare -a var
Amma ba lallai ba ne a ayyana masu canjin jeri kamar yadda ke sama. Za mu iya saka abubuwa ɗaya ɗaya don tsarawa kai tsaye kamar haka.
var[XX]=<value>
inda 'XX' ke nuna ma'anar tsararru. Don abubuwan da ba su dace ba, yi amfani da madaidaicin madaidaicin ma'auni, watau.
${var[XX]}
Lura: Ƙididdigar tsararru koyaushe tana farawa da 0.
Wata hanyar da ta dace ta fara gabaɗayan jeri ita ce ta yin amfani da ɓangarorin biyu kamar yadda aka nuna a ƙasa.
var=( element1 element2 element3 . . . elementN )
Har yanzu akwai wata hanyar sanya ƙima ga tsararru. Wannan hanyar farawa ƙaramin rukuni ne na hanyar da aka bayyana a baya.
array=( [XX]=<value> [XX]=<value> . . . )
Hakanan zamu iya karantawa/ sanya dabi'u zuwa tsararru yayin lokacin aiwatarwa ta amfani da readbuiltin harsashi.
read -a array
Yanzu da aiwatar da bayanin da ke sama a cikin rubutun, yana jiran wasu bayanai. Muna buƙatar samar da abubuwan tsararru da sararin samaniya ya raba (kuma ba dawowar karusa ba). Bayan shigar da ƙimar latsa shigar don ƙarewa.
Don ratsa ta cikin abubuwan tsararru za mu iya amfani da madauki.
for i in “${array[@]}” do #access each element as $i. . . done
Rubutun mai zuwa yana taƙaita abubuwan da ke cikin wannan sashe na musamman.
#!/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
Yawancin daidaitattun ayyukan kirtani suna aiki akan tsararru. Dubi rubutun samfurin mai zuwa wanda ke aiwatar da wasu ayyuka akan tsararru (ciki har da ayyukan kirtani).
#!/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
Mai zuwa shine fitarwar da aka samar akan aiwatar da rubutun da ke sama.
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
Ina tsammanin babu wani mahimmanci a cikin bayanin rubutun da ke sama dalla-dalla kamar yadda yake bayyana kansa. Idan ya cancanta zan sadaukar da bangare ɗaya a cikin wannan jerin na musamman akan sarrafa igiyoyi.
Musanya umarni yana sanya fitar da umarni ko umarni da yawa zuwa wani mahallin. Anan a cikin wannan mahallin tsararraki za mu iya shigar da fitar da umarni a matsayin daidaikun abubuwa na arrays. Syntax shine kamar haka.
array=( $(command) )
Ta hanyar tsohuwa abubuwan da ke cikin fitarwa na umarni da aka raba su da fararen sarari ana toshe su cikin tsararru azaman abubuwa guda ɗaya. Rubutun mai zuwa yana lissafin abubuwan da ke cikin kundin adireshi, waɗanda fayiloli ne masu izini 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
Za mu iya sauƙin wakiltar matrix mai girma biyu ta amfani da tsararru mai girma 1. A cikin manyan oda abubuwan wakilci a cikin kowane jeri na matrix ana ci gaba da adana su a cikin jeri-jeri ta hanyar jeri. Don matrix mXn, ana iya rubuta dabara don iri ɗaya kamar.
matrix[i][j]=array[n*i+j]
Dubi wani rubutun samfurin don ƙara matrices 2 da buga matrix sakamako.
#!/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
Ko da yake akwai iyakoki don aiwatar da tsararru a cikin rubutun harsashi, yana zama da amfani a cikin ƴan yanayi kaɗan, musamman idan muka yi amfani da canjin umarni. Duba daga mahangar gudanarwa, ra'ayin tsararraki ya buɗe hanya don haɓaka rubutun baya da yawa a cikin tsarin GNU/Linux.