Существует несколько способов решения этой проблемы.
1 / Отменить отступ маркера конца документа, например:
cat <<EOF
hello
$PWD
EOF
но это сделает ваш код уродливым.
2 / "Отступ" здесь маркер начала документа:
cat <<' EOF'
hello
$PWD
EOF
где этот бит перед первым EOF точно такой же, как и перед вторым (табуляция, четыре пробела, две табуляции, что угодно). Это позволяет сохранить приятный отступ, хотя он не расширяет переменные внутри документа here ($PWD
не изменяется).
3 / Разрешить удаление вкладок с начала строк ввода и маркера конца.
cat <<-EOF
hello
$PWD
EOF
но нет способа получить вкладки в начале строк.
4 / Для ваших целей вы также можете использовать:
( echo "$DB_ADMIN";
echo "" ;
echo "0" ;
echo "y" ;
echo "n"
) | db.sh
check_status
sqlplus $DB_SCHEMA@$DB_NAME < initial_data.sql
cd -
Я считаю, что номер 4 - лучший вариант для вас. Это позволяет красиво выстраивать ввод, табуляции и пробелы в любом месте строк и расширять переменные.