El archivo por lotes que usa WinSCP no ejecutará el script de shell UNIX que asigna variables a la salida del comando "más"

El archivo por lotes que usa WinSCP no ejecutará el script de shell UNIX que asigna variables a la salida del comando "más"

Estoy trabajando con un script por lotes que usa WinSCP para transferir archivos desde una máquina UNIX a una máquina con Windows. Para lograr esto, WinSCP tiene que llamar scripts de shell en el lado UNIX.
Hay un script de shell que se detiene y no devuelve ningún valor hasta que caduca la sesión SFTP sin devolver la información esperada del script de shell. La línea WinSCP que ejecuta esta tarea es la siguiente

"C:\Program Files (x86)\WinSCP\WinSCP.com" /command "option batch abort" "option confirm off" "open sftp://user:[email protected]/data/line/script/" "call ./d_check_org1" "exit"

En este caso, esta línea tiene que activar el script de shell d_check_org1, que mostrará el resultado de sus líneas de eco.

d_check_org1 es así

#!/bin/bash

line=`more line_fullname`
seq=`more line_fullname | cut -c7-10`


if [ -d /gl/T60system/tripas/qcfiles/Line_QC/$seq ] && [ ! -z "/gl-off1/data/curro/Pi/$seq.$linefullname.*.*.pi" ]
then
Pi2name=`ls /gl-off1/data/curro/Pi2/"$seq".*| cut -c27-53`
piname=`ls /gl-off1/data/curro/Pi/"$seq".*| cut -c27-60`
echo
echo ===============================================
echo
echo DIRECTORY CHECK: 
echo              
echo For line $line   
echo              
echo $seq directory was found on qcfiles 
echo "File" $Pi2name was found on Pi2 directory 
echo "File" $piname was found on Pi directory 
echo              
echo ===============================================
else
echo
echo ===============================================
echo
echo DIRECTORY CHECK: 
echo 
echo For line $line
echo
echo $seq directory was NOT found on qcfiles, CHECK LINE NAME!
echo
echo ===============================================

fi

He reducido el problema a las primeras 2 líneas después de #!/bin/bash

Si asigno un valor a line y seq, entonces se ejecuta y muestra el contenido de las líneas de eco.

por ejemplo, si asigno valores como

line=2536140258
seq=0258

entonces este script se ejecutará completo

Pero en su forma original, donde el script tiene que asignar el nombre, se detendrá después de realizar la conexión hasta que se agote el tiempo de espera.

En el lado de UNIX, el script de shell funciona de cualquier manera.

Tenga en cuenta que dentro del bucle IF, hay 2 variables más a las que se les asignan otros valores, y estas 2 se ejecutan perfectamente, sin necesidad de un valor fijo.

información relacionada