function syncfile(){
echo "[ DONE $file ]"
return ;
}
function syncfolder(){
folder=$1
for foo in `ls -1 $folder`
do
file="$folder/$foo"
if [ -d $file ];then
syncfolder $file
elif [ -e $file ];then
syncfile $file
else
echo "$file is neither file nor directory"
fi
done
return;
}
上記は再帰のための私の2つの関数です..私がそれを呼び出す syncfolder $foldername
と、次の場合に適切な出力が得られません..
階層が以下のようなものであるとします
portchanges/
portchanges/script/script1/script1.sh
portchanges/script/script1/script2.sh
portchanges/script/script1/script3.sh
portchanges/script/script4.sh
portchanges/script/script5.sh
portchanges/script6.sh
portchanges/script7.sh
portchanges/appl/script11/script11.sh
portchanges/appl/script11/script12.sh
portchanges/appl/script11/script13.sh
今foldername=portchanges
、私が電話した場合syncfolder $foldername
の場合のみ処理します。
portchanges/script/script1/script1.sh
portchanges/script/script1/script2.sh
portchanges/script/script1/script3.sh
関数呼び出しで...そして関数のfunction syncfile()
に行きます。return
syncfolder
ディレクトリ内を検索しscript6.sh
ます!! これは完全に不適切な動作です !!script7.sh
portchanges/script/script1/
フォルダ全体とすべてのファイルがsyncfile()
機能するように再帰的に処理しますか?