Пакетный файл, использующий WinSCP, не выполнит сценарий оболочки UNIX, который назначает переменные для вывода команды «more»

Пакетный файл, использующий WinSCP, не выполнит сценарий оболочки UNIX, который назначает переменные для вывода команды «more»

Я работаю с пакетным скриптом, который использует WinSCP для передачи файлов с машины UNIX на машину Windows. Чтобы добиться этого, WinSCP должен вызывать скрипты оболочки на стороне UNIX.
Есть один скрипт оболочки, который останавливается и не возвращает никакого значения, пока не истечет сеанс SFTP, не возвращая ожидаемую информацию из скрипта оболочки. Строка WinSCP, которая выполняет эту задачу, выглядит следующим образом

"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"

В этом случае эта строка должна запустить скрипт оболочки d_check_org1, который покажет результат своих эхо-строк.

d_check_org1 выглядит так

#!/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

Я сузил проблему до первых двух строк после #!/bin/bash

Если я присваиваю значение line и seq, то он запускается и показывает содержимое строк echo.

например, если я присваиваю такие значения, как

line=2536140258
seq=0258

то этот скрипт выполнит полную

Но в исходном виде, где скрипт должен назначить имя, он остановится после установления соединения до истечения времени ожидания.

На стороне UNIX скрипт оболочки работает в любом случае.

Обратите внимание, что внутри цикла IF есть еще 2 переменные, которым присвоены другие значения, и эти 2 работают отлично, нет необходимости в фиксированном значении.

Связанный контент