SELECT TOP 1
Loc.[PLACE-REF],
Tenant.[TENANCY-REF],
PChar.[ACCOUNT-CODE],
PChar.[START-DATE],
PChar.[NET-AMT] AS [PREVIOUS-MEALS-NET-AMOUNT]
FROM
dbo.[RE-TENANCY] AS TenanT
LEFT JOIN dbo.[RE-TNCY-PLACE] AS TncyPlace
ON TncyPlace.[TNCY-SYS-REF] = TenanT.[TNCY-SYS-REF]
LEFT JOIN dbo.[IH-LOCATION] AS Loc
ON Loc.[PLACE-REF] = TncyPlace.[PLACE-REF]
LEFT JOIN dbo.[IH-PLACE-CHG] AS PChar
ON Pchar.[PLACE-REF] = Loc.[PLACE-REF]
WHERE
(
(Pchar.[START-DATE] = '04/01/2016')
OR
(Pchar.[START-DATE] BETWEEN '11/01/2016' AND '03/31/2017')
)
AND Tenant.[TNCY-STATUS] = 'CUR'
AND PChar.[ACCOUNT-CODE] = 'MEALS'
AND Loc.[PLACE-REF] = '166CHA010'
ORDER BY PChar.[START-DATE] DESC
;
以下是上述内容的输出。我只给出了部分代码,让我有理由退休!
filecount=0
if [ -e "$filename$ext" ]
then
ls -l $filename$ext
scp $filename$ext t2flex@ccfilesvr:/home/t2flex/.
mv $filename$ext $filename"_"$d$done
echo $filename$ext secure copied to ccfilesvr
filecount=$((filecount+1))
else
echo "$filename$ext Not found in $path."
fi | tee >> $logfile
# -----------------------------------------------------
if [ -e "$filenam1$ext" ]
then
ls -l $filenam1$ext
scp $filenam1$ext t2flex@ccfilesvr:/home/t2flex/.
mv -f $filenam1$ext $filenam1"_"$d$done
echo "$filenam1$ext secure copied to ccfilesvr"
filecount=$((filecount+1))
else
echo "$filenam1$ext Not found in $path."
fi
# ----------------------------------
echo "Number of files to transfer into ccfilesvr: $filecount" >> $logfile
if [ $filecount -ge 1 ]
then
echo "Files ready to upload to T2. Entering ccfilesvr..."
ssh t2flex@ccfilesvr . t2flexXfer.shl
else
echo "No files to upload. Entering ccfilesvr to download charges."
ssh t2flex@ccfilesvr . t2flexXfer.shl
fi
echo "Number of files to transfer into ccfilesvr: $filecount">> $logfile
为什么计数器总是以" 0"对我来说?
答案 0 :(得分:1)
来自chepner的评论是正确的诊断。
替换它:
fi | tee >> $logfile
有了这个:
fi > >(tee >> $logfile)
有什么区别?
使用|
汇总语句时,"左"管道的一部分在子shell中执行,子shell不能(无法)修改父shell中的变量。子shell结束时,指定的值将丢失,将控制权返回给父shell(生活在计算机的单独内存部分中)。容易遗漏的原因是子shell继承了来自父shell的所有变量的相同副本,因此您没有清楚地看到正在启动子shell。
一种看待它的方法是输出" $ BASHPID",它反映了当前的子shell数量(与#34; $$和#34相反;它反映了主要的shell)。
通过使用进程替换(> >(tee >> $logfile)
),if
语句在主shell中执行,tee
在子shell中,因此对您来说很重要的部分(具有作业的那个是留在主壳中的。
与标准管道相比,我不知道处理替换的许多缺点。它们可以嵌套(可能比管道更不易读取)以实现多个阶段。它们存在于"输出"品种(>()
)和&#34;输入&#34;品种(<()
)。进程替换导致FIFO(特殊文件)的创建,并且shell将表达式转换为可以读取或写入的文件名(取决于类型),因此它们基本上可以在接受文件名的任何地方使用。