diff --git a/spectre-meltdown-checker.sh b/spectre-meltdown-checker.sh index bc2f1c2..32f7442 100755 --- a/spectre-meltdown-checker.sh +++ b/spectre-meltdown-checker.sh @@ -97,17 +97,31 @@ global_critical=0 global_unknown=0 nrpe_vuln="" +echo_cmd='' __echo() { opt="$1" shift _msg="$@" + + if [ -z "$echo_cmd" ]; then + # find a sane `echo` command + # we'll try to avoid using shell builtins that might not take options + if which echo >/dev/null 2>&1; then + echo_cmd=`which echo` + else + [ -x /bin/echo ] && echo_cmd=/bin/echo + [ -x /system/bin/echo ] && echo_cmd=/system/bin/echo + fi + # still empty ? fallback to builtin + [ -z "$echo_cmd" ] && echo_cmd=echo + fi + if [ "$opt_no_color" = 1 ] ; then # strip ANSI color codes - _msg=$(/bin/echo -e "$_msg" | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g") + _msg=$($echo_cmd -e "$_msg" | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g") fi - # explicitly call /bin/echo to avoid shell builtins that might not take options - /bin/echo $opt -e "$_msg" + $echo_cmd $opt -e "$_msg" } _echo()