Похоже, что передача переменной *nix
в SQL*Plus
все портит.
Насколько я понимаю, вы будете sh передавать имя файла в сценарии, тогда самым простым механизмом будет определение его как SPOOL
файла напрямую (вместо его параметризации).
Кроме того, вы можете добавить некоторые действительно полезные SET
параметры для улучшения вывода.
sqlplus -S user/pass@service << EOF
SET LINESIZE 32000
SET PAGESIZE 0
SET TRIMSPOOL ON
SET TRIMOUT ON
SET WRAP OFF
SET TERMOUT OFF
spool /tmp/score_cnt.txt
select count(*) from score_tbl;
spool off
EOF
PS - EOF
не требует дополнительных exit
в sqlplus & select
оператор должен заканчиваться ;