Попытка сослаться на переменную среды в SQLcl может быть немного сложной. Вот три способа сделать это.

1. Передайте переменную в скрипт.

# Create a script that accepts a command line parameter
cat > test.sql <<EOF
define FOO='&1'
insert into t1 (txt) values ('&FOO');
select txt from t1;
exit;
EOF 

2. Используйте JavaScript в SQLcl

export FOO="BAR"
sql -L -s usr/pwd@db
SQL> script
var foovariable = java.lang.System.getenv("FOO");
var binds = {
  "FOO": foovariable
};

var sql = [
    "begin",
    "insert into t1 (txt) values(:FOO);",
    "end;"
].join("\n");

var result = util.execute(sql, binds);

if (!result){
  ctx.write("ERROR\n");
  ctx.write(util.getLastException());
  ctx.write("\n");
}
/

select txt from t1;

TXT      
________   
BAR      

3. Используйте журнал изменений Liquibase

Создать файл журнала изменений

--liquibase formatted sql
--changeset  christoph:1
insert into t1 (txt) values ('${FOO}');
--rollback not required

После экспорта переменной, как указано выше, войдите в SQLcl и выполните журнал изменений Liquibase.

SQL> lb update -changelog-file my_changelog.sql
--Starting Liquibase at 09:37:54 (version 4.17.0 #0 built at 2022-11-02 21:48+0000)

-- Loaded 1 changeSets
Running Changeset: my_changelog.sql::1::christoph
No Errors Encountered
SQL> select txt from t1;

TXT      
________   
BAR