Nṣiṣẹ pẹlu Awọn ipilẹ ni Ikarahun Ikarahun Shell - Apá 8


A ko le fojuinu ede siseto kan laisi ero ti awọn ipilẹ. Ko ṣe pataki bi wọn ṣe ṣe imuse laarin awọn ede oriṣiriṣi. Dipo awọn eto ṣe iranlọwọ fun wa ni sisọpọ data, iru tabi oriṣiriṣi, labẹ orukọ aami kan.

Nibi bi a ṣe fiyesi nipa kikọ iwe ikarahun, nkan yii yoo ran ọ lọwọ ni ṣiṣere ni ayika pẹlu diẹ ninu awọn iwe afọwọkọ ikarahun eyiti o lo imọran yii ti awọn eto.

Igbekale orun ati Lilo

Pẹlu awọn ẹya tuntun ti bash, o ṣe atilẹyin awọn ipilẹ-ọna ọkan. O le ṣeto opo kan ni gbangba nipasẹ kede ikarahun-itumọ.

declare -a var  

Ṣugbọn ko ṣe pataki lati kede awọn oniyipada oriṣi bi loke. A le fi sii awọn eroja kọọkan lati ṣeto taara bi atẹle.

var[XX]=<value>

nibiti ‘XX’ ṣe tọka itọka titobi. Lati sọ di mimọ awọn eroja lo isomọ akọmọ akọmọ, i.e.

${var[XX]}

Akiyesi: Itọka tito lẹsẹsẹ nigbagbogbo bẹrẹ pẹlu 0.

Ọna miiran ti o rọrun lati bẹrẹ ipilẹ gbogbo ọna jẹ nipasẹ lilo batapọ ti akọmọ bi a ṣe han ni isalẹ.

var=( element1 element2 element3 . . . elementN )

Ọna miiran wa ti fifun awọn iye si awọn eto. Ọna yii ti ipilẹṣẹ jẹ ẹka-kekere ti ọna ti a ṣalaye tẹlẹ.

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

A tun le ka/fi awọn iye si tito-ọrọ lakoko akoko ipaniyan lilo lilo ka ikarahun-itumọ.

read -a array

Nisisiyi lori ṣiṣe alaye ti o wa loke ninu iwe afọwọkọ kan, o duro de diẹ ninu titẹ sii. A nilo lati pese awọn eroja ti o yatọ nipasẹ aaye (ati kii ṣe ipadabọ gbigbe). Lẹhin titẹ awọn iye tẹ tẹ lati fopin si.

Lati kọja larin awọn eroja ti orun a tun le lo fun lupu.

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

Iwe afọwọkọ atẹle yii ṣe akopọ awọn akoonu ti apakan pataki yii.

#!/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

Ọpọlọpọ awọn iṣiṣẹ okun boṣewa ṣiṣẹ lori awọn ipilẹ. Wo iwe afọwọkọ atẹle ti o ṣe diẹ ninu awọn iṣiṣẹ lori awọn ipilẹ (pẹlu awọn iṣiṣẹ okun).

#!/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

Atẹle ni iṣelọpọ ti a ṣe lori pipaṣẹ afọwọkọ ti o wa loke.

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

Mo ro pe ko si lami ninu ṣiṣe alaye iwe afọwọkọ ti o wa loke ni apejuwe bi o ti jẹ alaye ara ẹni. Ti o ba jẹ dandan Emi yoo ya apakan kan si ori jara yii ni iyasọtọ lori awọn ifọwọyi okun.

Rirọpo aṣẹ yan iṣẹjade aṣẹ kan tabi awọn aṣẹ lọpọlọpọ sinu aaye miiran. Nibi ni ipo yii ti awọn iṣupọ a le fi sii iṣẹjade ti awọn ofin bi awọn eroja kọọkan ti awọn ipilẹ. Sintasi jẹ bi atẹle.

array=( $(command) )

Nipa aiyipada awọn akoonu inu iṣẹjade aṣẹ ti o yapa nipasẹ awọn alafo funfun ti wa ni edidi sinu orun bi awọn eroja kọọkan. Iwe afọwọkọ atẹle yii ṣe atokọ awọn akoonu ti itọsọna kan, eyiti o jẹ awọn faili pẹlu awọn igbanilaaye 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

A le ni irọrun ṣojuuṣe matrix iwọn-meji nipa lilo ọna iwọn 1 kan. Ni tito aṣẹ pataki awọn eroja oniduro ni ila kọọkan ti matrix kan ti wa ni lilọsiwaju ni awọn atọka tito ni ọna itẹlera. Fun matrix mXn kan, agbekalẹ fun kanna ni a le kọ bi.

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

Wo iwe afọwọkọ miiran fun fifi awọn iwe-ikawe meji kun ati titẹjade iwe-ẹri abajade.

#!/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 

Botilẹjẹpe awọn idiwọn wa fun imisi awọn eto inu iwe afọwọkọ ikarahun, o di iwulo ni ọwọ ọwọ awọn ipo, ni pataki nigbati a ba mu pẹlu rọpo aṣẹ. Nwa lati oju-iwoye iṣakoso, imọran ti awọn eto ṣe ọna fun idagbasoke ọpọlọpọ awọn iwe afọwọkọ lẹhin ni awọn ọna GNU/Linux.