Fahimta da Ayyukan Rubutu a cikin Rubutun Shell - Sashe na VI


Ayyuka suna taka muhimmiyar rawa a kowane harshe na shirye-shirye. Kamar yawancin harsunan shirye-shirye na gaske, bash yana da ayyuka waɗanda ake amfani da su tare da iyakanceccen aiwatarwa.

Menene ayyuka?

A cikin shirye-shirye, ana ba da suna ayyuka sassan sassan shirin da ke yin takamaiman aiki. A wannan ma'ana, aiki wani nau'in tsari ne ko na yau da kullun. Lokacin da ake kira aiki shirin ya bar sashin lambar na yanzu kuma ya fara aiwatar da layin farko a cikin aikin. Duk lokacin da aka sami lambar maimaitawa ko lokacin da ɗawainiya ta maimaita, yi la'akari da amfani da aiki maimakon.

Misali, yi la'akari da yanayin inda muke buƙatar nemo ɓangarorin lamba a matakai da yawa na wani shiri. Maimakon rubuta dukkan lambar (don ƙididdige ƙididdiga) kowane lokaci, za mu iya rubuta wannan ɓangaren lambar wanda ke ƙididdige ƙididdiga sau ɗaya a cikin toshe kuma sake amfani da iri ɗaya a lokuta da yawa.

  1. Yana taimaka mana mu sake amfani da lambar.
  2. Inganta karatun shirin.
  3. Ingantacciyar amfani da masu canji a cikin shirin.
  4. Yana ba mu damar gwada sashin shirin ta bangare.
  5. Nuna shirin a matsayin tarin ƙananan matakai.

Gabaɗaya syntax don ayyukan rubutu a rubutun harsashi sun haɗa da hanyoyi masu zuwa.

function func_name {
	. . .
	commands
	. . .
}

or

func_name ( ) {
	. . .
	commands
	. . .
}

Opening curly braces can also be used in the second line as well.

func_name ( )
{
	. . .
	commands
	. . .
}

Kullum kuna da 'yanci don rubuta ingantattun umarni a cikin waɗannan tubalan ayyuka kamar yadda muke yi kullum a cikin rubutun harsashi. Yanzu bari mu yi ƙoƙarin rubuta rubutun guda ɗaya mai sauƙi tare da ƙaramin aiki a ciki.

#!/bin/bash

call_echo ( ) {
	echo ‘This is inside function’
}

op=$1

if [ $# -ne 1 ]; then
	echo "Usage: $0 <1/0>"
else
	if [ $1 = 0 ] ; then
		echo ‘This is outside function’
	elif [ $1 = 1 ] ; then
		call_echo
	else
		echo ‘Invalid argument’
	fi
fi

exit 0

Dole ne ma'anar aikin ta riga ta fara kiransa. Babu wani abu kamar 'bayyana aikin' kafin kiransa. Kuma koyaushe muna iya yin ayyukan gida a cikin ayyuka.

Lura:- Rubutun ayyukan wofi ko da yaushe yana haifar da kurakurai.

Lokacin da aka bayyana aikin iri ɗaya sau da yawa, sigar ƙarshe shine abin da ake kira. Bari mu dauki misali.

#!/bin/bash

func_same ( ) {
	echo ‘First definition’
}

func_same ( ) {
	echo ‘Second definition’
}

func_same

exit 0

Bari mu zurfafa ta la'akari da ayyuka ɗaukar sigogi da dawo da ƙima. Don dawo da ƙima daga aiki muna amfani da ginanniyar harsashi 'dawowa'. Syntax shine kamar haka.

func_name ( ) {
	. . .
	commands
	. . .
	return $ret_val
}

Hakazalika muna iya ƙaddamar da muhawara zuwa ayyukan da aka raba tare da sarari kamar yadda aka bayar a ƙasa.

func_name $arg_1 $arg_2 $arg_3

A cikin aikin za mu iya samun damar yin muhawara kamar $1, $2, $3 da sauransu. Dubi rubutun misali mai zuwa don nemo iyakar lambobi biyu ta amfani da aiki don ƙara haske.

#!/bin/bash

USG_ERR=7

max_two ( ) {
	if [ "$1" -eq "$2" ] ; then
		echo 'Equal'
		exit 0
	elif [ "$1" -gt "$2" ] ; then
		echo $1
	else
		echo $2
	fi
}

err_str ( ) {
	echo "Usage: $0 <number1>  <number2>"
	exit $USG_ERR
}

NUM_1=$1
NUM_2=$2
x
if [ $# -ne 2 ] ; then
	err_str
elif [ `expr $NUM_1 : '[0-9]*'` -eq ${#NUM_1} ] ; then
	if [ `expr $NUM_2 : '[0-9]*'` -eq ${#NUM_2} ] ; then  
		max_two $NUM_1 $NUM_2
	else
		err_str
	fi
else
	err_str
fi

exit 0

Abin da ke sama yana kama da ɗan rikitarwa, amma yana da sauƙi idan muka karanta ta cikin layi. An fara zama idan ba haka ba idan layuka don dalilai masu inganci watau, don bincika lamba da nau'in muhawara tare da taimakon maganganun yau da kullun. Bayan haka muna kiran aikin tare da gardamar layin umarni guda biyu kuma muna nuna sakamakon a can kanta. Wannan saboda ba za mu iya dawo da manyan lambobi daga aiki ba. Wata hanyar da za a yi aiki a kusa da wannan matsala ita ce amfani da masu canji na duniya don adana sakamakon cikin aikin. Rubutun da ke ƙasa ya bayyana wannan hanya.

#!/bin/bash

USG_ERR=7
ret_val=

max_two ( ) {
	if [ "$1" -eq "$2" ] ; then
		echo 'Equal'
		exit 0
	elif [ "$1" -gt "$2" ] ; then
		ret_val=$1
	else
		ret_val=$2
	fi
}

err_str ( ) {
	echo "Usage: $0 <number1>  <number2>"
	exit $USG_ERR
}

NUM_1=$1
NUM_2=$2

if [ $# -ne 2 ] ; then
	err_str
elif [ `expr $NUM_1 : '[0-9]*'` -eq ${#NUM_1} ] ; then
	if [ `expr $NUM_2 : '[0-9]*'` -eq ${#NUM_2} ] ; then  
		max_two $NUM_1 $NUM_2
		echo $ret_val
	else
		err_str
	fi
else
	err_str
fi

exit 0

Yanzu gwada wasu matsaloli masu ban sha'awa waɗanda aka bayyana a cikin jerin rubutun harsashi na baya ta amfani da ayyuka kamar haka.

  1. Fahimtar Tushen Harshen Rubutun Shell na Linux - Sashe na I
  2. Rubutun Shell 5 don Sabbin Linux don Koyan Shirye-shiryen Shell - Sashe na II
  3. Tafi Ta Duniyar Rubutun BASH na Linux - Sashe na III
  4. Hanyoyin Lissafi na Linux Shell Programming – Sashe na IV
  5. Kirga Kalmomin Lissafi a Harshen Rubutun Shell - Sashe na V

Zan dawo tare da ƙarin haske game da fasalulluka na aiki kamar amfani da masu canji na gida, maimaitawa da sauransu a sashi na gaba. Kasance da sabuntawa tare da sharhi.