Используйте eval
для оценки строки как команды:
eval "$cmd"
Будьте осторожны, так как это будет запускать команду в текущем процессе. Это может изменить переменные или сделать другие неожиданные вещи с вашим сценарием. Было бы безопаснее явно вызывать подоболочку, которая выполняла бы команду в изолированном дочернем процессе:
sh -c "$cmd"
Чтобы последний работал, обязательно экспортируйте UP
.
UP='...'
export UP
sh -c "$cmd"
Кроме того, избавьтесь от пробелов вокруг sqlplus
в script.sh
.
echo "exit" | sqlplus -s -l $connection