Сообщения об ошибках не отображаются при сравнении типов данных из 2 файлов в скрипте оболочки.

Сообщения об ошибках не отображаются при сравнении типов данных из 2 файлов в скрипте оболочки.

У нас есть требование сравнить типы данных. Я создал файлы .txt с типами данных и написал запрос для получения типов данных из системной таблицы netezza (мы используем базу данных netezza) и экспорта в файл .txt. И я использовал diff -qкоманду для подсветки, если есть какие-либо несоответствия. На самом деле я получаю правильные результаты, когда он совпадает, но он не подсвечивает, если есть какие-либо несоответствия. Я мог пропустить, чтобы дать правильные сообщения об ошибках echo или что-то еще, чтобы получить то, что ожидалось. Всего нужно проверить 10 файлов, поэтому я использовал цикл for.

Я попробовал приведенный ниже код, но если у вас есть какая-то простая логика или какие-либо идеи, это было бы полезно.

for <condition>
do
TABLE_ddl="SELECT TYPE_NAME FROM SYSTEM.._V_SYS_COLUMNS WHERE TABLE_NAME = '${TABLENAME}name';
echo ${TABLE_ddl};

CURRENT_TEMP_DDL=`nzsql -h ${hostname} -db ${database} -u ${username} -pw ${password} -A -t -o ${PATH}/${TABLENAME}_TABLE.TXT -c "${TABLE_ddl}"`
echo ${CURRENT_TABLE_DDL};
done

CHECK=`diff -q ${PATH}/${TABLENAME}_FILE.txt ${PATH}/${TABLENAME}_TABLE.TXT`;

И я ожидаю результата, подобного приведенному ниже.

tablename
CURRENT_TEMP_DDL #Query which should reflect with table name
datatypes matched
For ex. 
employee
select type_name from system.._v_sys_columns where table_name = 'employee' and database =<dbname>
datatypes matched for employee_FILE.txt and employee_TABLE.TXT

department
select type_name from system.._v_sys_columns where table_name = 'department' and database =<dbname>
datatypes unmatched for department_FILE.txt and department_TABLE.TXT

решение1

Я не совсем понимаю, что именно вы имеете в виду, говоря «подсветить» разницу между двумя файлами, но вы можете использовать diffдля отображения разницы между двумя файлами:

diff file1 file2 | grep "<" | sed 's/^<//g'для отображения на стандартном выводе

что даст результат:

skywalker@endor:~/scripts/python/proxyupdate$ diff proxyupdate.py proxyupdate.bak | grep "<" | sed 's/^<//g'
 #this line is added for testing

или

diff file1 file2 | grep "<" | sed 's/^<//g' > file3.txtдля записи в новый файл.

или вы также можете попробовать sort:

sort file1 file2 | uniq -u

что дает тот же результат:

skywalker@endor:~/scripts/python/proxyupdate$ sort proxyupdate.py proxyupdate.bak | uniq -u
#this line is added for testing

Связанный контент