2014-01-22 51 views
1

我正在製作一個搜索文件的腳本,並計數em。稍後,我使用此計數值創建備份文件。這是什麼樣子:Bash循環返回null停止程序?

#!/bin/sh 
#LOCAL VAR PERFECTLY DEFINED 



if $estdifferent ; then 
     x=0; 
     for fic in `find $OTHERDIR/liste/ -type f -name "${filename}_bak*"` ; do 
     { 

      filename_tab[x]=$fic 
      ((x++)) 
     } 
     echo "tableau rempli, nombre de fichier bak : "$x 

這個代碼塊工作時「發現」找到至少一個文件,而不是在有0個文件。 該腳本未達到最後的「回聲」。

echo differents 
differents 
true 
x=0 
find /tech/gtr/scripts/osm/scan-configs/liste/ -type f -name 'IDF-952584-S... 

爲什麼:調試模式下停止腳本?

+0

'/ bin/sh'是什麼味道和版本?這是'bash'語法無效的。 'for'循環看起來像'for ...;做...完成「,而不是用」{...}「塊。 – twalberg

+0

Bash 4.1.2(1)for redhat。 這個'for'語法在找到文件時工作:) –

回答

0

嘗試更換:

for fic in `find $OTHERDIR/liste/ -type f -name $filename"_bak"*`;do 
{ 
    echo $fic 
    filename_tab[x]=$fic 
    ((x++)) 
} 

通過

for fic in `find $OTHERDIR/liste/ -type f -name $filename"_bak"*` ; do 
    echo $fic 
    filename_tab[x]=$fic 
    ((x++)) 
done 

好嗎?

+0

調試說: ++ find/tech/gtr/scripts/osm/scan-configs/liste/-type f -name find: -name' 但它也說了,我的$ filename var不是空的幾行上面 –

+0

任何人都請嗎? :( –

+1

@ user2564494這應該表明你的問題,並不是說'find'沒有找到任何東西 - 你的模式中的'*'字符被外殼看到並展開了,嘗試使用'-name「$ {filename} _bak *「'代替,因爲引用可以防止glob擴展 – twalberg