La solución dada por @codeforester funciona. Sin embargo, no pude usarlo porque creó tantas conexiones de base de datos como el número de líneas en su archivo, lo que es un impacto potencial.
Para superar esto, elegí la siguiente solución que puede no ser ideal pero hace el trabajo con solo una conexión DB.
Considerando los mismos datos en archivo.txt
12354
13456
13498
Utilicé el siguiente comando sed para completar lo anterior con una sola variable "12354,13456,13498"
myvariable=$(echo "`cat file.txt | sed '$!s/$/,/g' | tr -d '\n' | tr -d ' '`")
Ahora, el siguiente script pasará esta variable a la consulta SQL y colocará los datos en un archivo de texto:
#!/bin/bash
myvariable=$(echo "`cat file.txt | sed '$!s/$/,/g' | tr -d '\n' | tr -d ' '`")
echo @myvariable
sqlplus /nolog << EOF
CONNECT [email protected]/dbpassword
SPOOL dboutput.txt
select column1 from table_name where id in ($myvariable);
SPOOL OFF
EOF
La salida se almacena en dboutput.txt (junto con la consulta SQL)
cat dboutput.txt
SQL> select column1 from table_name where id in (12354,13456,13498);
NAME
---------------------------------------------------------------------------- ----
data1
data2
data3
SQL> spool off