VI קלח - תפטעמ לש םיטפירקסב הביתכו הנבה תויצקנופ
.לבגומ םושיי םע תושמשמה תויצקנופ שי bash -ל ,תובר תויתימא תונכת תופש ומכ .תונכת תפש לכב בושח דיקפת תויצקנופל
?תויצקנופ ןהמ
.תאז םוקמב היצקנופב שמתשהל לוקש ,תרזוח המישמ רשאכ וא רזוח דוק שיש םעפ לכב .היצקנופה ךותב הנושארה הרושה תא עצבל הליחתמו יחכונה דוקה עטק תא תבזוע תינכותה היצקנופ תארקנ רשאכ .הרגש וא ךילה לש
.תויונמדזה רפסמב רזוח שומיש וב תושעלו קולב ךותב תחא םעפ לעפמה תא בשחמה דוקה לש קלח ותוא תא בותכל םילוכי ונא ,םעפ לכב (לעפמה בושיחל) דוקה לכ תא בותכל םוקמב .תמיוסמ תינכות לש םיבלש רפסמב רפס
.תואבה םיכרדה תא ללוכ תפטעמ טפירקסב הביתכ תויצקנופל יללכה ריבחתה
function func_name { . . . commands . . . } or func_name ( ) { . . . commands . . . } Opening curly braces can also be used in the second line as well. func_name ( ) { . . . commands . . . }
.וכותב הנטק היצקנופ םע דחא טושפ טפירקס בותכל הסננ ואוב וישכע .תפטעמ לש םיטפירקסב ללכ ךרדב םישוע ונאש יפכ הלא תויצקנופ ישוג ךותב תופקת תודוקפ בותכל יאשר דימת התא
#!/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
.תויצקנופ ךותב תויצקנופ ןנקל לכונ דימתו .הל םיארוקש ינפל 'היצקנופה לע זירכהל' ומכ ןיא .הילא הנושארה החישה תא םידקהל היצקנופה תרדגה לע
.ריבחת תואיגשל דימת האיבמ תוקיר תויצקנופ תביתכ - :הרעה
.אמגוד חקינ ואוב .תלעפומש וז איה תיפוסה הסרגה ,םימעפ רפסמ תרדגומ היצקנופ התוא רשאכ
#!/bin/bash func_same ( ) { echo ‘First definition’ } func_same ( ) { echo ‘Second definition’ } func_same exit 0
.ןמקלדכ אוה ריבחתה .תינבומה 'רזחה' תפטעמב םישמתשמ ונא היצקנופמ ךרע ריזחהל ידכ .םיכרע תוריזחמו םירטמרפ תוחקולש תויצקנופ תניחב ידי לע קימעהל ואוב
func_name ( ) { . . . commands . . . return $ret_val }
.ןלהל טרופמכ םיחוורב תודרפומה תויצקנופל םינועיט ריבעהל םילוכי ונא המוד ןפואב
func_name $arg_1 $arg_2 $arg_3
.רתוי הבר תוריהב ףיסוהל ידכ היצקנופב םישמתשמה םימלש םירפסמ ינש לש םומיסקמה תא אוצמל ידכ אבה המגודל טפירקסב ןייע .האלה ןכו 3 $,2 $,1 $רדסב םיחוכיוול תשגל םילוכי ונא היצקנופה ךותב
#!/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
.וז הטיש ריבסמ ןלהלש טירסתה .היצקנופה ךותב האצותה ןוסחאל םיילבולג םינתשמב שמתשהל איה וז היעב ףוקעל תפסונ ךרד .היצקנופמ םילודג םימלש םירפסמ ריזחהל םילוכי אל ונחנאש איה ךכל הביסה .המצע האצות
#!/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
.ןמקלדכ תויצקנופ תועצמאב זגפ לש תמדוקה םיטפירקס תרדסב ורבסוהש תושגרמ תויעב המכ הסנ תעכ
.תובוגתב ןכדועמ ראשיה .אבה קלחב' וכו היסרוקר ,םיימוקמ םינתשמב שומיש ומכ תוילנויצקנופ תונוכת לע תונבות רתוי םע רוזחא ינא