Я пытающийся выполнить следующую команду в Kornshell (КШ):Awk, как представляется, отсоединение DB2 сессии конвейеру
set -A INDEXES `db2 "describe indexes for table ${TABSCHEMA}.${TABNAME} show detail" | awk '{print $1"."$2}'`
То, что я пытаюсь достичь, этого место списка индексов по конкретной таблице в массив, который я могу позже перебрать.
Проблема в том, что когда я запускаю указанную выше команду, содержимое массива начинается с сообщения об ошибке «SQL1024N» (который говорит мне, что соединение с базой данных не существует).
Однако, если я удалю awk
в конце заявления, как так:
set -A INDEXES `db2 "describe indexes for table ${TABSCHEMA}.${TABNAME} show detail"`
он работает просто отлично (ну, насколько он возвращает данные Очевидно, без awk
я не захватывая. правильные данные).
Кто-нибудь знает, почему на это влияет awk
?
Я ценю, что есть несколько способов получить эти данные, но это меня озадачивает, почему это происходит.
Заранее спасибо.
Отлично! Это помогло, спасибо, Фред. – greggannicott
Так же, как и в стороне: моя грязная работа для этой попытки (которая сама по себе могла быть классифицирована как грязная работа) заключалась в том, чтобы запустить db2look и использовать awk для моделирования многострочной grep (что-то, что не может сделать в ksh с помощью grep) Мне удалось получить список индексов. – greggannicott
Утилита db2look - это хороший способ генерировать полный DDL для объектов, но если вас интересует только то, о чем идет речь, в представлении SYSCAT.INDEXES много полезной информации. –