Advanced Bash-Scripting Guide: An in-depth exploration of the art of shell scripting | ||
---|---|---|
Prev | Chapter 23. Functions | Next |
���������local����������ô��ֻ���ڸñ��������������(block of code)�пɼ�. ����������Ǿֲ�"��Χ". ��һ�������ڣ��ֲ�������ζ��ֻ���ں��������������������.
���� 23-12. �ֲ������Ŀɼ���Χ
1 #!/bin/bash 2 # �ں����ڲ���ȫ�ֺ;ֲ�����. 3 4 func () 5 { 6 local loc_var=23 # ����Ϊ�ֲ�����. 7 echo # ʹ���ڽ���'local'�ؼ���. 8 echo "\"loc_var\" in function = $loc_var" 9 global_var=999 # û������Ϊ�ֲ�����. 10 # Ĭ��Ϊȫ�ֱ���. 11 echo "\"global_var\" in function = $global_var" 12 } 13 14 func 15 16 # ���ڣ��������Ƿ�ֲ�����"loc_var"�ܷ��ں�������ɼ�. 17 18 echo 19 echo "\"loc_var\" outside function = $loc_var" 20 # $loc_var outside function = 21 # ��, $loc_var����ȫ�ֿɷ��ʵ�. 22 echo "\"global_var\" outside function = $global_var" 23 # $global_var outside function = 999 24 # $global_var ��ȫ�ֿɷ��ʵ�. 25 echo 26 27 exit 0 28 # ��In contrast to C���, �ں�����������Bash����ֻ���� 29 #+ ������ȷ�����ɾֲ��ı���ʱ���Ǿֲ���. |
![]() |
�ں�������֮ǰ�������ں�����������û����ȷ����Ϊlocal�ı��������ں�������ɼ�.
|
�ֲ��������Եݹ�, [1] ������취����������ļ��㣬�������shell�ű����DZ���ȷ�������Ƽ���. [2]
���� 23-13. �þֲ��������ݹ�
1 #!/bin/bash 2 3 # �׳� 4 # --------- 5 6 7 # bash�����ݹ���? 8 # ��, ����, ����... 9 # ��̫����������������. 10 11 12 MAX_ARG=5 13 E_WRONG_ARGS=65 14 E_RANGE_ERR=66 15 16 17 if [ -z "$1" ] 18 then 19 echo "Usage: `basename $0` number" 20 exit $E_WRONG_ARGS 21 fi 22 23 if [ "$1" -gt $MAX_ARG ] 24 then 25 echo "Out of range (5 is maximum)." 26 # �������������˽�ʵ�����. 27 # �����������������ķ�Χ�Ľ׳�, 28 #+ Ӧ��������һ�������ı��������д. 29 exit $E_RANGE_ERR 30 fi 31 32 fact () 33 { 34 local number=$1 35 # ����"number"��������Ϊ�ֲ�, 36 #+ ���������Ṥ��. 37 if [ "$number" -eq 0 ] 38 then 39 factorial=1 # 0�Ľ׳�Ϊ1. 40 else 41 let "decrnum = number - 1" 42 fact $decrnum # �ݹ����(�����ڲ������Լ�����). 43 let "factorial = $number * $?" 44 fi 45 46 return $factorial 47 } 48 49 fact $1 50 echo "Factorial of $1 is $?." 51 52 exit 0 |
Ҳ��ο����� A-16�Ľű��ݹ������. ������ʶ���ݹ�Ҳ��ζ�ž����Դ���ĺͻ��������У���������ʺ��ڽű���ʹ��.
[1] | Herbert Mayer ���ݹ��µĶ�����". . . expressing an algorithm by using a simpler version of that same algorithm(��һ����ͬ�㷨�İ汾����ʾһ���㷨) . . ." �ݹ麯���ǵ������Լ������ĺ���. | |
[2] | ̫���ĵݹ���ܻ�����ű��δ��������.
|