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