2013-02-22 122 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"