я выполнить запрос в импала, чтобы проверить, что условие выполняется в таблице и хранить число строк в переменной Баш:импала-оболочка вставляет нечетные управляющие символы в ответ на неинтерактивный запрос
UC=$(impala-shell -r -q "select count(1) from table where condition=1" -d $DB -i $HOST -B)
UC теперь держит количество строк, где условие один, в этом случае, ни одна строка не удовлетворяет этому условию:
echo $UC
0
мое сравнение, чтобы проверить значение UC терпит неудачу, потому что он имеет странные символы управления в передней части.
if [ "$UC" == "0" ]; then echo 1; else echo 0; fi
0
echo $UC | hexdump
0000000 5b1b 313f 3330 6834 3020 000a
000000b
При попытке удалить нецифровые от входа, я получаю странный выход
echo $UC | sed 's/[^0-9]*//g'
10340
Что здесь происходит, и как я могу отформатировать результат, чтобы сделать мое простое сравнение?
Можете ли вы показать вывод 'echo -n" $ UC "| xxd' – anubhava
@anubhava конечно вывод '0000000: 1b5b 3f31 3033 3468 2030 0a. [? 1034h 0.' – Mike
try' echo $ UC | sed 's/^ \ ([^ 0-9] \ {2 \} \) * // g''. Вы используете двойной символ 8 бит. Лучше всего преобразовать первый код 8bit char. – NeronLeVelu