Bash: Создание чтения подкаталогов из файла

У меня есть файл, содержащий некоторые ключевые слова, и я намерен создать подкаталоги в том же каталоге того же ключевого слова, используя скрипт bash. Вот код, который я использую, но он не работает. Я не знаю, где я ошибся. Помоги мне

for i in `cat file.txt`
do
#        if [[ ! -e $path/$i ]]; then
            echo "creating" $i "directory"
            mkdir $path/$i
#       fi
            grep $i file >> $path/$i/output.txt
done
echo "created the files in "$path/$TEMP/output.txt

2 ответа

Вы ошиблись здесь, и вы ошиблись здесь.

while read i
do
  echo "Creating $i directory"
  mkdir "$path/$i"
  grep "$i" file >> "$path/$i"/output.txt
done < file.txt
echo "created the files in $path/$TEMP/output.txt"

78mkdir откажется создавать каталог, если его части не существует. например, если нет /foo/bar каталог, то mkdir /foo/bar/baz не удастся.

Вы можете немного расслабиться, используя -p флаг, который при необходимости создаст родительские каталоги (в примере это может создать /foo а также /foo/bar).

Вы также должны использовать кавычки, если ваши пути содержат пробелы.

mkdir -p "${path}/${i}"

наконец, убедитесь, что вам действительно разрешено создавать каталоги в $path

Другие вопросы по тегам