使用 WinSCP 的批处理文件不会执行将变量分配给“more”命令输出的 UNIX shell 脚本

使用 WinSCP 的批处理文件不会执行将变量分配给“more”命令输出的 UNIX shell 脚本

我正在使用批处理脚本,该脚本使用 WinSCP 将文件从 UNIX 计算机传输到 Windows 计算机。为此,WinSCP 必须在 UNIX 端调用 shell 脚本。
有一个 shell 脚本会停止运行,并且不会返回任何值,直到 SFTP 会话到期,而不会从 shell 脚本返回预期的信息。执行此任务的 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"

在这种情况下,此行必须触发 shell 脚本 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 方面,shell 脚本可以以任何方式工作。

请注意,在 IF 循环内部,还有 2 个变量被分配了其他值,并且这 2 个变量运行完美,不需要固定值。

相关内容