WinSCP를 사용하는 배치 파일은 "more" 명령의 출력에 변수를 할당하는 UNIX 쉘 스크립트를 실행하지 않습니다.

WinSCP를 사용하는 배치 파일은 "more" 명령의 출력에 변수를 할당하는 UNIX 쉘 스크립트를 실행하지 않습니다.

저는 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 다음의 처음 2줄로 문제를 좁혔습니다.

line과 seq에 값을 할당하면 실행되어 에코 라인의 내용이 표시됩니다.

예를 들어 다음과 같은 값을 할당하면

line=2536140258
seq=0258

그러면 이 스크립트는 완전히 실행될 것입니다

그러나 스크립트가 이름을 할당해야 하는 원래 형식에서는 연결이 이루어진 후 시간이 초과될 때까지 중지됩니다.

UNIX 측에서는 쉘 스크립트가 어느 방식으로든 작동합니다.

IF 루프 내부에는 다른 값이 할당된 변수가 2개 더 있으며 이 2개는 완벽하게 실행되므로 고정 값이 필요하지 않습니다.

관련 정보