Чтение в каталог, скрипт оболочки unix - PullRequest
1 голос
/ 24 апреля 2010

Я пытаюсь проанализировать файлы / каталоги внутри каталога с помощью сценария оболочки, например, если файл доступен для чтения, если это файл, если это каталог, и т. Д. Мой сценарий настроен на прием каталог в качестве ввода. поэтому я бы набрал 'file.sh directoryname'. Однако когда я создаю цикл for для анализа файлов, он анализирует файлы в моем текущем рабочем каталоге, а не в указанном имени каталога.

Это мой неработающий код:

file=$1
set mypath = $file
for file in $mypath *
do

if [ -d $file ]
  dirCount=`expr $dirCount + 1`
fi

done

Почему это читает рабочий каталог вместо указанного каталога? Любая помощь приветствуется. Спасибо

Ответы [ 3 ]

1 голос
/ 18 июля 2012
# 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
1 голос
/ 24 апреля 2010

Я думаю, у вас есть ошибка здесь:

set mypath = $file

Просто сделай

mypath = $file

и это должно сработать.

0 голосов
/ 11 июня 2013

вы можете попробовать это. но сценарий станет проблемой, когда в имени папки будет пустое место.

#/bin/bash
path=$1
for file in $path/*
do
if [ -d $file ];then
  dirCount=`expr $dirCount + 1`
fi
done
echo $dirCount
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...