Решението, дадено от @codeforester, работи. Въпреки това не можах да го използвам, защото създаде толкова DB връзки, колкото е броят на редовете във вашия файл, което е потенциално въздействие.
За да преодолея това, избрах решението по-долу, което може да не е идеално, но върши работата само с една DB връзка.
Като се имат предвид същите данни във file.txt
12354
13456
13498
Използвах командата sed по-долу, за да попълня горното в една променлива "12354,13456,13498"
myvariable=$(echo "`cat file.txt | sed '$!s/$/,/g' | tr -d '\n' | tr -d ' '`")
Сега скриптът по-долу ще предаде тази променлива на SQL заявката и ще прехвърли данните в текстов файл:
#!/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
Резултатът се съхранява в dboutput.txt (заедно със SQL заявката)
cat dboutput.txt
SQL> select column1 from table_name where id in (12354,13456,13498);
NAME
---------------------------------------------------------------------------- ----
data1
data2
data3
SQL> spool off