Primeiro, leia o arquivo em uma matriz.
Isto é para um arquivo contendo os valores em uma única linha:
read -ar values < "$DIRECTORY"/acc.txt
Para um arquivo de múltiplas linhas, use um loop (um valor por linha):
while read -r v; do
values+=("$v")
done < <(cat "$DIRECTORY"/acc.txt)
De acordo com o comentário de Archemar, a sintaxe SQL é var in ( "value1", "value2", ... )
, então é necessário algum processamento de texto.
Primeiro, citando:
for i in "${values[@]}"; do quoted_values+=(\""$i"\"); done
Em segundo lugar, delimitando com vírgulas e espaços:
limit="${#quoted_values[@]}"
for ((i=0; i<"$limit"; i++ )); do
values_string="$values_string""${quoted_values[$i]}"
((limit-i-1)) && values_string="$values_string",
values_string="$values_string"" "
done
Os colchetes ao redor da lista de valores aparecerão no documento aqui.
sqlplus -s "$USERNAME"/"$PASSWORD"@"$HOST"<<EOF
spool "$DIRECTORY"/UPDATE.xls
select acc,cr,dr from count
where acc in ( "$values_string" );
spool off;
exit
EOF
Não testado, então pode haver um erro de digitação, etc. Comente se você tiver problemas.