使用 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 分配一個值,那麼它會運行並顯示回顯行的內容

例如,如果我指派像這樣的值

line=2536140258
seq=0258

那麼這個腳本將執行完整

但在其原始形式中,腳本必須分配名稱,它將在連接建立後停止,直到逾時。

在 UNIX 端,shell 腳本以兩種方式運作。

請注意,在 IF 循環內部,還有 2 個變數被分配了其他值,而這 2 個變數運行完美,不需要固定值。

相關內容