Oye ati kikọ awọn iṣẹ ni Awọn iwe afọwọkọ Shell - Apakan VI


Awọn iṣẹ ṣe ipa pataki ninu eyikeyi ede siseto. Bii ọpọlọpọ awọn ede siseto gidi, bash ni awọn iṣẹ eyiti o lo pẹlu imuse opin.

Kini awọn iṣẹ?

Ninu siseto, awọn iṣẹ ni orukọ awọn apakan ti eto ti o ṣe iṣẹ kan pato. Ni ori yii, iṣẹ kan jẹ iru ilana tabi ilana ṣiṣe. Nigbati a ba pe iṣẹ kan eto naa fi apakan ti koodu lọwọlọwọ silẹ o bẹrẹ lati ṣe laini akọkọ ninu iṣẹ naa. Nigbakugba ti koodu atunwi wa tabi nigbati iṣẹ-ṣiṣe ba tun ṣe, ronu lilo iṣẹ dipo.

Fun apẹẹrẹ, ṣe akiyesi ọran nibiti a nilo lati wa otitọ ti nọmba ni awọn ipo pupọ ti eto kan pato. Dipo kikọ gbogbo koodu (fun iṣiro iṣiro) kọọkan ati ni gbogbo igba, a le kọ apakan koodu naa eyiti o ṣe iṣiro asọtẹlẹ lẹẹkan ni inu apo kan ki o tun lo kanna ni awọn iṣẹlẹ lọpọlọpọ.

  1. O ṣe iranlọwọ fun wa lati tun lo koodu naa.
  2. Ṣatunṣe kika eto naa.
  3. Lilo daradara ti awọn oniyipada inu eto naa.
  4. Gba wa laaye lati ṣe idanwo apakan eto naa ni apakan.
  5. Eto ti o han bi opo awọn igbesẹ-kekere.

Iṣọpọ gbogbogbo fun awọn iṣẹ kikọ ni iwe afọwọkọ pẹlu awọn ọna wọnyi.

function func_name {
	. . .
	commands
	. . .
}

or

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

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

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

O ni ominira nigbagbogbo lati kọ awọn ofin to wulo ninu awọn bulọọki iṣẹ wọnyi bi a ṣe ṣe deede ni awọn iwe afọwọkọ ikarahun. Bayi jẹ ki a gbiyanju lati kọ iwe afọwọkọ kan ti o rọrun pẹlu iṣẹ kekere inu rẹ.

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

Itumọ iṣẹ gbọdọ ṣaju ipe akọkọ si rẹ. Ko si nkankan bii ‘kede iṣẹ naa’ ṣaaju pipe. Ati pe a le ṣe itẹ-ẹiyẹ nigbagbogbo awọn iṣẹ inu awọn iṣẹ.

Akiyesi: - Kikọ awọn iṣẹ ofo nigbagbogbo awọn abajade ni awọn aṣiṣe sintasi.

Nigbati a ba ṣalaye iṣẹ kanna ni awọn igba pupọ, ẹya ikẹhin ni ohun ti a pe. Jẹ ki a mu apẹẹrẹ kan.

#!/bin/bash

func_same ( ) {
	echo ‘First definition’
}

func_same ( ) {
	echo ‘Second definition’
}

func_same

exit 0

Jẹ ki a jinle nipa ṣiṣe akiyesi awọn iṣẹ mu awọn ipilẹ ati awọn iye pada. Lati pada iye kan lati iṣẹ kan a lo ikarahun ‘ipadabọ’ ti a ṣe sinu. Sintasi jẹ bi atẹle.

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

Bakan naa a le kọja awọn ariyanjiyan si awọn iṣẹ ti o ya sọtọ pẹlu awọn alafo bi a ti fun ni isalẹ.

func_name $arg_1 $arg_2 $arg_3

Ninu iṣẹ a le wọle si awọn ariyanjiyan ni aṣẹ bi $1, $2, $3 ati bẹbẹ lọ. Wo iwe afọwọkọ atẹle lati wa iwọn ti awọn odidi meji nipa lilo iṣẹ lati ṣafikun diẹ sii.

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

Eyi ti o wa loke dabi eka diẹ, ṣugbọn o rọrun ti a ba ka nipasẹ awọn ila naa. Itẹ-kọkọ ti o ba jẹ pe miiran ti awọn ila fun awọn idi afọwọsi eyini ni, lati ṣayẹwo nọmba ati iru awọn ariyanjiyan pẹlu iranlọwọ ti awọn ọrọ deede. Lẹhin eyi a pe iṣẹ naa pẹlu awọn ariyanjiyan laini aṣẹ meji ati ṣafihan abajade nibẹ funrararẹ. Eyi jẹ nitori a ko le da odidi titobi pada si iṣẹ kan. Ọna miiran lati ṣiṣẹ ni ayika iṣoro yii ni lati lo awọn oniyipada agbaye lati tọju abajade inu iṣẹ. Iwe afọwọkọ ti o wa ni isalẹ ṣe alaye ọna yii.

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

Bayi gbiyanju diẹ ninu awọn iṣoro igbadun ti o ṣalaye ninu jara afọwọkọ ikarahun iṣaaju nipa lilo awọn iṣẹ bi atẹle.

  1. Loye Awọn imọran Ede Ikarahun Ikarahun Linux - Ipilẹ I
  2. Awọn iwe afọwọkọ Shell 5 fun Awọn tuntun Linux lati Kọ ẹkọ Eto Ikarahun - Apakan II
  3. Gbigbe Nipasẹ Agbaye ti Linux BASH Writing - Apá III
  4. Isiro Iṣiro ti Siseto Ikarahun Ikarahun Linux - Apakan IV
  5. Ṣiṣiro Awọn asọye Iṣiro ni Ede Ibawe ikarahun - Apakan V

Emi yoo pada pẹlu oye diẹ si awọn ẹya iṣẹ bi lilo awọn oniyipada agbegbe, ifadasẹhin abbl ni apakan ti n bọ. Duro si imudojuiwọn pẹlu awọn asọye.