Подтвердить что ты не робот

Назначить результат AWK переменной

Это должно быть довольно прямолинейно, и я не знаю, почему я борюсь с ним.

Я запускаю следующую команду psql из оболочки script, чтобы выяснить, были ли все индексы удалены перед вставкой данных.

INDEXCOUNT=$(psql -p $dbPort -U enterprisedb -d main_db -c "select Count(*) from all_indexes where index_schema = 'enterprisedb';")

В этот момент INDEXCOUNT равен "COUNT ------- 0"

Теперь, если я повторяю следующую строку, я получаю результат, который я хочу -

echo $INDEXCOUNT | awk '{print $3}'

Как назначить значение $INDEXCOUNT | awk ‘{print $3}’ переменной, чтобы проверить ее в выражении "IF"?

Например:

RETURNCOUNT=$INDEXCOUNT | awk '{print $3}'
4b9b3361

Ответ 1

В bash правильно работает:

 a=$(echo '111 222 33' | awk '{print $3;}' )
 echo $a # result is "33"

Другой вариант - преобразовать строку в массив:

 a="111 222 333"
 b=($a)

 echo ${b[2]}  # returns 333

Ответ 2

Или вы можете напрямую использовать:

${INDEXCOUNT##* }

Ответ 3

Это может быть проще использовать для тестирования с помощью инструкции if/

INDEXCOUNT="111 222 333"
echo $INDEXCOUNT | awk '{if ($3 == 333) print $3}';

Ответ 4

Вы можете попробовать следующее:

RETURNCOUNT=`echo $INDEXCOUNT | awk '{print $3}'`

Идея состоит в том, чтобы включить любую команду оболочки между backticks, чтобы получить результат в переменную.