File: D1782.test.sh

package info (click to toggle)
ble.sh 0.4.0~git20250321.d4c812b-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 12,516 kB
  • sloc: sh: 71,367; awk: 1,316; cpp: 750; ansic: 186; javascript: 43; makefile: 35
file content (39 lines) | stat: -rw-r--r-- 1,014 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash

flag=

shopt -s extdebug

function set_exit {
  return "$1"
}
function set_trap {
  # DEBUG trap の中で trap や return を実行しても "現在のコマンド" は
  # 必ず実行される。
  #
  # Note: 中で BASH_COMMAND を書き換えても実際に実行されるコマンドが変
  # 化する訳ではない。(BASH_COMMAND="echo rewrite" として見たがやはり
  # NOT_REACHED1 が表示される)。
  #
  # Note: 中で trap - DEBUG するかどうかは関係ない。
  #
  # Note: continue や return の前に指定した終了ステータスは DEBUG trap
  # (extdebug) の振る舞いには関係ない。
  #
  #trap '[[ $flag == 1 ]] && { echo "cmd:$FUNCNAME/$BASH_COMMAND"; set_exit 2; return 2; }' DEBUG

  trap '[[ $flag == 1 ]] && { echo "cmd:$FUNCNAME/$BASH_COMMAND"; shopt -s extdebug; set_exit 2; }' DEBUG
}

function f1 {
  local flag= i=
  for ((i=0;i<10;i++)); do
    flag=1
    set_trap
    echo NOT_REACHED1
    flag=0
    echo NOT_REACHED2
  done
}
f1