
我正在使用一個批次腳本,該腳本使用 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 個變數運行完美,不需要固定值。