Итак, у меня есть переменная TRAILER, которая содержит около 50 символов.Эта переменная определена ранее в моей сессии оболочки.Как вы, вероятно, можете сказать, это трейлер к файлу, который мы будем отправлять.Мне нужно вставить количество записей этого файла в трейлер.Этот счетчик записи будет иметь длину 9 цифр (если нужно, оставит нули с нулями) и будет начинаться с индекса 2 этой строки TRAILER.Я хочу сохранить все остальные символы в строке TRAILER, просто вставив значение переменной RECORD_COUNT в переменную TRAILER, начиная с индекса 2 (3-й символ)
Таким образом, переменная трейлера определяется следующим образом:
#Trailer details
TRAILER_RECORD_IDENTIFER="T"
LIFE_CYCLE="${LIFE_CYCLE_ENV}"
RECORD_COUNT="" #This will be calculated in the wrapper during the creation step
FILE_NUMBER="1111"
FILE_COUNT="1111"
CONTROL_TOTAL_1=" "
CONTROL_TOTAL_2=" "
CONTROL_TOTAL_3=" "
CONTROL_TOTAL_4=" "
CONTROL_TOTAL_5=" "
TRAILER="${TRAILER_RECORD_IDENTIFER}"\
"${LIFE_CYCLE}"\
"${RECORD_COUNT}"\
"${FILE_NUMBER}"\
"${FILE_COUNT}"\
"${CONTROL_TOTAL_1}"\
"${CONTROL_TOTAL_2}"\
"${CONTROL_TOTAL_3}"\
"${CONTROL_TOTAL_4}"\
"${CONTROL_TOTAL_5}"
, который затем печатает TRAILER как TRAILER = "TD11111111 ......", что будет 75 пробелами для всех белых символов, определенных переменными CONTROL_TOTAL.
Эти переменные ВСЕ определяются вначало оболочки.REcord count определено, но оставлено незаполненным, потому что мы не будем знать конкретный файл до тех пор, пока позже в его оболочке.
Позже в оболочке я знаю файл, который я хочу использовать, я получаю количество записей:
cat ${ADE_DATA_FL_PATH_TMP} | wc -l | read ADE_DATA_FL_PATH_TMP_REC_COUNT >> ${LOG_FILE} 2>&1
Теперь я хочу взять ADE_DATA_FL_PATH_TMP_REC_COUNT и записать это значение в переменную TRAILER, начиная со второго индекса, дополненного нулями до 9 символов.Поэтому, если мое количество записей будет 2700, новый трейлер будет выглядеть так: TRAILER = "TD00000270011111111 ......"