Como @meuh mencionou nos comentários, sqlcmd
estava lendo stdin , por isso, anexar </dev/null
corrigiu o problema. O problema era que o loop while
estava iterando sobre o stdin (anteriormente redirecionado de um arquivo exec 0<"${file}"
) e o sqlcmd
que estava dentro do while
tentou ler do > stdin . A solução estava fazendo o sqlcmd
ler a partir de /dev/null
em vez de stdin .
Corrigir
exec 3<&0
exec 0<"${file}"
while read -r line || [[ -n ${line} ]]
do
echo "${line}"
sqlcmd -S svr -U usr -P pwd -i input_file </dev/null
done
exec 0<&3
exec 3<&-
echo "Script completed successfully!"