Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
 

I just stumbled upon a nice way to enhance the bash debug trace output format (See here for the source).

 

Just declare

declare -r PS4='|${LINENO}> \011${FUNCNAME[0]:+${FUNCNAME[0]}(): }'

and you will get following output

framp@obelix:~/scripts$ bash -x ./dbg.sh 3
+ declare -r 'PS4=|${LINENO}> \011${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
|16> main(): fib 3
|6> fib(): (( 3 <= 0 ))
|8> fib(): (( 3 == 1 ))
||11> fib(): fib 1
||6> fib(): (( 1 <= 0 ))
||8> fib(): (( 1 == 1 ))
||9> fib(): echo 1
||11> fib(): fib 2
||6> fib(): (( 2 <= 0 ))
||8> fib(): (( 2 == 1 ))
|||11> fib(): fib 0
|||6> fib(): (( 0 <= 0 ))
|||7> fib(): echo 0
|||11> fib(): fib 1
|||6> fib(): (( 1 <= 0 ))
|||8> fib(): (( 1 == 1 ))
|||9> fib(): echo 1
||11> fib(): echo 1
|11> fib(): echo 2
2

when you execute following code to calculate the Fibonacci numbers:

1: #!/bin/bash

3: declare -r PS4='|${LINENO}> \011${FUNCNAME[0]:+${FUNCNAME[0]}(): }'

5: function fib(){
6: if (( $1 <= 0 )); then
7: echo 0
8: elif (( $1 == 1 )); then
9: echo 1
10: else
11: echo $[ $(fib $(($1-2)) ) + $(fib $(($1 - 1)) ) ]
12: fi

14: }

16: fib $1
 

 

Kommentar schreiben

*** Hinweis ***

Kommentare sind erwünscht. Aber um lästige Spamposts abweisen zu können gibt es ein paar Dinge die zu beachten sind:
  1. Kommentare mit dem Text http werden sofort zurückgewiesen mit der Meldung Sie sind nicht berechtigt den Tag zu verwenden. zz
  2. Kommentare werden manuell überprüft und es dauert deshalb in der Regel einen Tag bis sie veröffentlicht werden.