Lecture dans le répertoire, script shell unix

J’essaie d’parsingr les fichiers / répertoires d’un répertoire à l’aide d’un script shell, par exemple si le fichier est lisible, s’il s’agit d’un fichier, s’il s’agit d’un répertoire, etc. Mon script est configuré pour prendre un répertoire comme consortingbution. donc je taperais “file.sh directoryname”. Cependant, lorsque je crée une boucle for pour parsingr les fichiers, elle parsing les fichiers de mon répertoire de travail actuel plutôt que le nom du répertoire spécifié.

Ceci est mon code cassé:

file=$1 set mypath = $file for file in $mypath * do if [ -d $file ] dirCount=`expr $dirCount + 1` fi done 

Pourquoi lit-il le répertoire de travail au lieu du répertoire spécifié? Toute aide est appréciée. Merci

Je pense que vous avez une erreur ici:

 set mypath = $file 

Juste faire

 mypath = $file 

et ça devrait bien marcher.

 # check this one file=$1 mypath=$file dirCount=0 #ls $file for file in `ls $mypath` do file=./$mypath/$file #a=`ls -l $file` echo $a if [ -d $file ] then dirCount=`expr $dirCount + 1` #increment count echo $dirCount fi done #if count value is grater than 1 then only print value if [ $dirCount -ne 0 ] then echo -e "\ncount is $dirCount $$" fi 

vous pouvez essayer ceci. mais le script sera remis en cause lorsque le nom du dossier aura un espace vide.

 #/bin/bash path=$1 for file in $path/* do if [ -d $file ];then dirCount=`expr $dirCount + 1` fi done echo $dirCount