40 lines
		
	
	
	
		
			486 B
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
	
		
			486 B
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | shopt -s extdebug | ||
|  | 
 | ||
|  | callstack(){ | ||
|  |  deep=${#BASH_ARGV[*]} | ||
|  |  echo "deep $deep" | ||
|  |  i=0 | ||
|  |  for ff in ${BASH_ARGV[@]} | ||
|  |  do | ||
|  |   echo "$i $ff" | ||
|  |   i=$(($i+1)) | ||
|  |  done | ||
|  | } | ||
|  | 
 | ||
|  | f3() | ||
|  | { | ||
|  | 	echo $FUNCNAME: calling callstack | ||
|  | 	callstack | ||
|  | 	echo FUNCNAME stack: ${FUNCNAME[@]} | ||
|  | 	caller 0 | ||
|  | 	echo $FUNCNAME: returning | ||
|  | } | ||
|  | 
 | ||
|  | f2() | ||
|  | { | ||
|  | 	echo $FUNCNAME: calling f3 | ||
|  | 	f3 3 z | ||
|  | 	echo $FUNCNAME: return from f3 | ||
|  | } | ||
|  | 
 | ||
|  | f1() | ||
|  | { | ||
|  | 	echo $FUNCNAME: calling f2 | ||
|  | 	f2 2 y | ||
|  | 	echo $FUNCNAME: return from f2 | ||
|  | } | ||
|  | 
 | ||
|  | echo main: calling f1 | ||
|  | f1 1 x | ||
|  | echo main: f1 returns |