scripts: allow logging of commands with variables

In a lot of places, we need to call some commands with specific
variable settings, a-la:
  var1=val1 var2=val2 /foo/bar/buz opt1 opt2

Unfortunately, we currently can not log the variable settings.

Enhance CT_DoExecLog with a crude heuristic that works pretty well
and that can also log setting variables.

Reported-by: ANDY KENNEDY <ANDY.KENNEDY@adtran.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
This commit is contained in:
Yann E. MORIN" 2011-03-15 23:18:37 +01:00
parent 7bfa4139ad
commit 807daf12d0

View File

@ -119,12 +119,26 @@ CT_DoLog() {
}
# Execute an action, and log its messages
# Usage: [VAR=val...] CT_DoExecLog <level> <command [parameters...]>
# It is possible to even log local variable assignments (a-la: var=val ./cmd opts)
# Usage: CT_DoExecLog <level> [VAR=val...] <command> [parameters...]
CT_DoExecLog() {
local level="$1"
shift
CT_DoLog DEBUG "==> Executing: '${*}'"
(
for i in "$@"; do
tmp_log+="'${i}' "
done
while true; do
case "${1}" in
*=*) eval export "'${1}'"; shift;;
*) break;;
esac
done
CT_DoLog DEBUG "==> Executing: ${tmp_log}"
"${@}" 2>&1 |CT_DoLog "${level}"
)
# Catch failure of the sub-shell
[ $? -eq 0 ]
}
# Tail message to be logged whatever happens