sistema_progs

Programas para customizar o meu entorno de traballo nos meus equipos persoais
Log | Files | Refs

D1349.debug-trace.sh (1789B)


      1 #!/bin/bash
      2 
      3 function check1 {
      4   function f1 {
      5     local i
      6     for ((i=0;i<10;i++)); do
      7       ((i==0)) && continue
      8       ((i==1)) && break
      9     done
     10     return 1
     11   }
     12   function f2 {
     13     echo f2:BEGIN
     14     f1
     15     echo f2:END
     16   }
     17 
     18   trap 'echo "\$ $BASH_COMMAND"' DEBUG
     19 
     20   # trace 属性のない場合
     21   f2
     22 
     23   # 内側の関数のみ trace 属性のある場合
     24   declare -ft f1
     25   f2
     26 
     27   # 外側・内側の関数に trace 属性の在る場合
     28   declare -ft f1 f2
     29   f2
     30 }
     31 
     32 echo ------------------------------------------------------------------------------
     33 echo check1
     34 (check1)
     35 
     36 function check2 {
     37   function f1 {
     38     echo '$ trap -p'
     39     trap -p
     40     echo '$ trap -p DEBUG'
     41     trap -p DEBUG
     42   }
     43 
     44   trap 'echo "\$ $BASH_COMMAND"' DEBUG
     45   echo '$ trap -p'
     46   trap -p
     47   echo '$ trap -p DEBUG'
     48   trap -p DEBUG
     49   f1
     50 }
     51 
     52 echo ------------------------------------------------------------------------------
     53 echo check2
     54 (check2)
     55 
     56 function check3 {
     57   function f1 {
     58     trap 'echo "[DEBUG]"' DEBUG
     59   }
     60   function f2 {
     61     trap DEBUG
     62   }
     63 
     64   trap 'echo "\$ $BASH_COMMAND"' DEBUG
     65   f2
     66   f2
     67   f1
     68   f1
     69 }
     70 echo ------------------------------------------------------------------------------
     71 echo check3
     72 (check3)
     73 
     74 function check4 {
     75   function f1 {
     76     echo hello1
     77     trap 'echo "\$ $BASH_COMMAND"' DEBUG
     78     echo hello2
     79   }
     80   trap 'echo "\$ $BASH_COMMAND"' DEBUG
     81   f1
     82 }
     83 echo ------------------------------------------------------------------------------
     84 echo check4
     85 (check4)
     86 
     87 echo ------------------------------------------------------------------------------
     88 function check5 {
     89   function trap-debug {
     90     echo "alpha:$BASH_COMMAND"
     91     trap 'echo "DEBUG:DEBUG $BASH_COMMAND"' DEBUG
     92     trap -p DEBUG
     93     echo "beta:$BASH_COMMAND"
     94   }
     95   trap 'echo A; trap-debug; echo Z' DEBUG
     96   echo gamma
     97 }
     98 echo check5
     99 (check5)