2013-08-16 68 views
0

我編寫了下面的腳本,腳本的目的是查找所有以foo開頭並且不再舊的文件3天對它們進行排序,然後將它們與列表文件中的文件列表進行比較。並只報告缺少的文件。我的腳本存在的問題是,它並沒有考慮到一個丟失的文件,例如看下面的例子 假設我的名爲list的文件包含foo1,foo2,foo3,foo4,foo5,但是如果一個文件丟失字符串比較關閉。也就是說,如果文件foo4丟失當腳本運行foo5將foo4bash腳本中的字符串比較問題

希望進行比較是有道理的

enter 

#!/bin/bash 
Set –x 
Find ~/test99 –name 「foo*」 –mtime -3 –print>report 
Sort report –o report; 
Cat report|cut -c 22-25>report1; 
while read comp1<&3 && read comp2<&4 
do 
    if [[ $comp1 = $comp2 ]]; then 
    echo "file not found" >/dev/null 
else 
    echo "$comp1 not found" 
fi 
done 3<report1 4<list 
+1

您在比較中忘記了'comp2'變量之前的美元符號。它應該是'if [[$ comp1 ==「$ comp2」]];那麼' – user000001

回答

1

你可能想使用diff比較列表

,或者您可以使用fgrep -vf report list以獲得列表和報告之間的差異

+0

你如何建議我使用差異,因爲我正在測試,通過讓它從名爲「list」的文件獲取輸入來查看文件列表是否存在,然後使用find來搜索文件列表並將結果輸出到文件稱爲報告並將輸出與列表文件進行比較。 – Jon

+0

如果你能更清楚地澄清問題,它將大大地幫助給出更好的答案....我想你想得到'list'和'report'之間的區別 –

+0

好吧,我明白你現在在說什麼。我正在使用fgrep -vf來獲取正在工作的區別。但我只希望它迴應丟失的文件。 \t我現在的代碼如下所示。測試正常,但我的邏輯錯誤。如果[[-s $輸出]]然後是' '回聲沒有文件丟失' 'else' '回聲'文件是一個文件丟失 'Fgrep -vf report1 output' '丟失「' 'fi' – Jon