Browse Source

working bash-strict

main
pvincent 2 weeks ago
parent
commit
d3de3bfd20
  1. 37
      bin/bash-strict
  2. 20
      test5.sh

37
bin/bash-strict

@ -1,29 +1,42 @@
#!/usr/bin/env -S -- bash
# CONSTANTS
TMP_ERROR=$(mktemp -t "$(basename $0).XXXXXXXX" --tmpdir=/run/user/$(id -u))
# FUNCTIONS
function on_exit {
code=${1:-0}
echo ON_EXIT2 $code
[[ -s /tmp/error ]] && cat /tmp/error
stack_lines=("${BASH_LINENO[@]}")
stack_functions=("${FUNCNAME[@]}")
stack_sources=("${BASH_SOURCE[@]}")
tmp_error=${2:-/dev/null}
echo "ERROR #${code} due to:"
[[ -s $tmp_error ]] && cat $tmp_error && rm $tmp_error
echo "${stack_lines[@]}"
echo "${stack_functions[@]}"
echo "${stack_sources[@]}"
trap - ERR TERM INT EXIT
builtin exit $code
}
echo BASH_STRICT $@
echo ----------
# MAIN
command=$1
shift
args=("$@")
args2=()
for i in "${args[@]}"; do
echo ARG: $i
args2+=("${i@Q}")
done
echo "----$command ${args2[@]}------"
for i in "${args[@]}"; do args2+=("${i@Q}"); done
# echo "----$command ${args2[@]}------"
set -TEue -o pipefail
export -f on_exit
echo PROCESS START
bash -c "set -TEue -o pipefail; trap 'on_exit \$?' ERR TERM INT EXIT; source $command ${args2[*]}" 3>&1 1>&2 2>&3 | tee /tmp/error
echo PROCESS END succesfully
# echo PROCESS START
bash -c "set -TEue -o pipefail; trap 'on_exit \$? $TMP_ERROR' ERR TERM INT EXIT; source $command ${args2[*]}" 3>&1 1>&2 2>&3 | tee $TMP_ERROR
# echo PROCESS END succesfully

20
test5.sh

@ -1,15 +1,19 @@
#!/usr/bin/env -S -- bash-strict
#!/usr/bin/bash-strict
##!/usr/bin/env -S -- bash-strict
# source lib/halt.bash
function f2 {
# _BACKTRACE=${_BACKTRACE:-false}
# echo TEST5_BACKTRACE=$_BACKTRACE
unknown_command
echo $nope
}
function f1 {
f2
}
echo START TEST5 $@
echo START TEST5
for i in "$@"; do
echo ARG: $i
done
# blabla
unknown_command
# echo $nope
f1
echo END TEST5
Loading…
Cancel
Save