2017-02-05 18 views
-1

bashスクリプトを使用して独自のrmコマンドを作成しようとしていますが、新しいコマンド「remove」は1つまたは複数のパラメータ(ファイルとフォルダ)それがファイルを見つけたときディレクトリが空になったときにディレクトリとディレクトリ自体を削除する

:それはこのように行動しなければならない、それはそれを

を削除する前に許可の親をチェックする必要があり、それは空のディレクトリを見つけたとき、それはそれ

と最後を削除する必要がありますケースでは、空でないフォルダが見つかった場合は、もちろんその権限をチェックした後にそのコンテンツをすべて削除しなければならず、親ディレクトリが空になった場合はommandそれを削除する必要がありすぎ

私の問題は、第三の場合は、私のために動作しないということであるここ

は、私はそれがはるかになると思い空のディレクトリを見つけるために私のコード

#!/bin/bash 

if [ $# -lt 1 ] 
then 
    echo "Executer la commande avec au moins un paramètre" 
else 
    for i in $* 
    do 
     filename=`basename $i` 
     #echo "nom fichier : $filename" 
     path=`dirname $i` 
     #echo "chemin du fichier : $path" 
     #Vérification de l'existence du fichier/rep 
     if [ -e $path/$filename ] 
     then 
      # Si fichier 
      if [ -f $path/$filename ] 
      then 
      echo "fichier" 
      $HOME/droit_parent $path 
      valretourne=$? 
      if [ $valretourne -eq 20 ] 
      then 
       echo "Erreur : `dirname $path` n\'a pas le droitW"    
      else if [ $valretourne -eq 10 ] 
      then 
       rm -f $path/$filename 
       echo "$path/$filename a été bien supprimé" 
      fi 
      fi 
     fi 
     #Si rep 
     if [ -d $path/$filename ] 
     then 
      echo "repertoire" 
      if [ "$(ls -A $path/$filename)" ] 
      then 
      echo "non empty directory" 
      $HOME/remove $path/$filename/* 
      if [ ! "$(ls -A $path/$filename)" ] 
      then 
       rmdir $path/$filename 
      fi 
      else 
      echo "empty directory" 
      rmdir $path/$filename 
      fi 
     fi 
     else echo "ERREUR : $path/$filename n\'existe pas !" 
    fi 
    done  
fi 
+1

あなたが働いていないと思うのコードのセクションを強調表示していただけますか? – codeforester

答えて

0

ですを使用すると、そのディレクトリにファイル/フォルダをリストする代わりにが見つかり、それに基づいて、そのディレクトリが空であるかどうかを判断できます。あなたが使用することができます

は次のように見つける:

find . -type d -empty 
関連する問題