Невозможно напечатать последнюю строку, используя awk после использования trap в bash-скрипте - PullRequest
0 голосов
/ 22 апреля 2019

Файл Bash имеет вид

#!/bin/bash



SomeErrorHandler () {
    (( errcount += $? ))

 echo -e $errcount


}

trap SomeErrorHandler ERR


uname +a 2>/dev/null
uname +a 2>/dev/null
uname +a 2>/dev/null
uname +a 2>/dev/null
uname +a 2>/dev/null

uname -a 1>/dev/null

declare -a f
         # this is never printed

f="$(SomeErrorHandler)"

echo -e "$f" | awk 'END {print}'

Я хочу, чтобы возвращаемое значение было из значения a как

1
2
3
4
5

, чтобы вернуть последнее совпадение, равное 5, вместо вывода просто выводится все в a.

Я также пытался с sed, но вывод такой же. Кажется, это всего лишь одна запись

1 Ответ

0 голосов
/ 23 апреля 2019

Считаете ли вы, что все echo из SomeErrorHandler() хранятся в переменной f?
Этого не происходит.

SomeErrorHandler () {
   if (( $# > 0 )); then
      echo -e $errcount
   else
      (( errcount += $? ))
   fi
}

trap SomeErrorHandler ERR
errcount=0

uname +a 2>/dev/null
uname +a 2>/dev/null
uname +a 2>/dev/null
uname +a 2>/dev/null
uname +a 2>/dev/null

uname -a 1>/dev/null

# Use a random parameter for displaying the current value
SomeErrorHandler show
...