2013-02-22 41 views
0

下面的脚本工作正常。但是,当我尝试添加一个命令到远程复制,然后将变量FILENAME分配给从远程副本接收到的文件时,while循环不起作用。我对脚本编程很陌生,所以我无法找出我错过的东西。请帮忙!Shell脚本为远程复制,然后处理文件

#!/bin/sh 
#SCRIPT: File processing 
#PURPOSE: Process a file line by line with redirected while-read loop. 
SSID=$1 
ASID=$2 
##rcp server0:/oracle/v11//dbs/${SSID}_ora_dir.lst /users/global/rahul/${ASID}_clone_dir.lst 
##FILENAME=/users/global/rahul/${ASID}_clone_dir.lst 
count=0 
while read LINE 
do 
echo $LINE | sed -e "s/${SSID}/${ASID}/g" 
count=`expr $count + 1` 
done < $FILENAME 
echo -e "\nTotal $count Lines read" 
grep -v -e "pattern3" -e "pattern5" -e "pattern6" -e "pattern7" -e "pattern8" -e "pattern9" -e "pattern10" -e "pattern11" -e " 
pattern12" ${ASID}_.lst > test_remote.test 
+0

我不懂这行,什么是这样做的:做<$ FILENAME – Satish 2013-02-22 15:12:38

+0

它使得“while”循环从$ FILENAME读,而不是标准输入 – loreb 2013-02-22 15:56:38

+0

BTW:“计数= 0 “行可能是越野车或错字 - 你有一个叫做”enter“的命令,它以”code“和”here“为参数? :) – loreb 2013-02-22 15:58:25

回答

0

当你说,“while循环不起作用”,如果你得到一个错误消息,您应该包括在你的问题给我们一个线索。

您确定rcp命令成功吗? rcp完成后文件/users/global/rahul/${ASID}_clone_dir.lst是否存在?

顺便提一句,你的while循环效率低下。这应该是等价的:

sed -e "s/${SSID}/${ASID}/g" < "$FILENAME" 
count=$(wc -l "$FILENAME" | awk '{print $1}') 
echo -e "\nTotal $count Lines read"