Как избежать следующей строки в скрипте BASH - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь прочитать имена таблиц и имена индексов из двух разных текстовых файлов, а затем создаю файлы sql, которые можно использовать для дефрагментации и восстановления индекса. На данный момент он работает нормально, но сгенерированный файл sql содержит следующую строку после имени таблицы / индекса. Скрипт PFB и примеры выходных данных.

BASH Скрипт:

#!/bin/bash

export logfile=/tmp/logfile.log
export tablenamesfile=/tmp/tablenames.txt
export tabledefragfile=/tmp/tabledefrag.sql
export indexnamesfile=/tmp/indexnames.txt
export indexrebuildfile=/tmp/indexrebuild.sql

while read line; do echo "alter table $line enable row movement;" >> $tabledefragfile; echo "alter table $line shrink space;" >> $tabledefragfile; echo "alter table $line disable row movement;" >> $tabledefragfile; done < $tablenamesfile
echo "Please check sql file - $(readlink -f $tabledefragfile)"

while read line; do echo "alter index $line rebuild parameters('tablespace=TBS_3');" >> $indexrebuildfile; done < $indexnamesfile
echo "Please check sql file - $(readlink -f $indexrebuildfile)"

exit

Текущий вывод в tabledefrag. sql

alter table APA_DS_DATASTORE
 enable row movement;
alter table APA_DS_DATASTORE
 shrink space;
alter table APA_DS_DATASTORE
 disable row movement;

Текущий вывод в indexrebuild. sql

alter index APA_DS_DATASTORE_PK
 rebuild parameters('tablespace=TBS_3');
alter index APA_FS_DEFAULT_FSENTRY_IDX
 rebuild parameters('tablespace=TBS_3');
alter index APA_FS_DEFAULT_FSENTRY_IDX
 rebuild parameters('tablespace=TBS_3');

Ожидаемый результат:

alter index APA_DS_DATASTORE_PK rebuild parameters('tablespace=TBS_3');
alter index APA_FS_DEFAULT_FSENTRY_IDX rebuild parameters('tablespace=TBS_3');
alter index APA_FS_DEFAULT_FSENTRY_IDX rebuild parameters('tablespace=TBS_3');

1 Ответ

2 голосов
/ 13 июля 2020

echo по умолчанию имеет новую строку. Вместо этого вы должны использовать printf.

Вам также нужно избегать перевода строки из файла: while IFS=$' \t\n\r' read -r LINE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...