Linux - создание нескольких папок из текстового файла

   #!/bin/bash
   IFS='
   '
   for _dir in $(cat "$1 usernames.lnk"); do
   mkdir "$_dir Windows"
   done

У меня возникли проблемы с этим скриптом. Он должен создать папку в папке Windows для каждого имени, указанное в текстовом файле usernames.lnk, но каждый раз, когда я пытаюсь запустить сценарий, он указывает, что каталог «usernames.lnk» не может быть найденным. Сценарий, файл имени пользователя и папка Windows находятся в одной папке. Заранее спасибо.

1
nl ja de
Несколько очевидных вещей. 1. $ 1 будет заменен первым аргументом скрипта или ничего, если нет аргументов. 2. cat "foo bar" будет искать файл с пробелом в его имени. Так будет cat "bar" . Вероятно, вы хотите usernames.lnk или, возможно, "$ 1/usernames.lnk" . 3. mkdir "foo bar" попытается создать каталог с пробелом в его имени. Вероятно, вам нужен «Windows/$ _ dir» .
добавлено автор n.m., источник

2 ответы

Это будет читать каждую строку файла usernames.lnk и создать каталог под каталогом Windows (относительный путь).

#!/bin/bash
while read -r line; do
    mkdir "Windows/$line"
done < usernames.lnk
3
добавлено
У вас должно быть "$ link" в двойных кавычках, иначе это сломается, если файл содержит имя файла с пробелами или другими специальными символами оболочки. См. Также read -r и FAQ для этой темы.
добавлено автор tripleee, источник
спасибо, это действительно помогло!
добавлено автор darkeve, источник

Этот путь должен работать:

#!/bin/bash

for i in `cat usernames.lnk`;
do mkdir "Windows/$i";
done
1
добавлено
-1 для бесполезного использования Backticks. partmaps.org/era/unix/award.html#backticks
добавлено автор tripleee, источник
Linux Help
Linux Help
2 686 участник(ов)

Правила: https://telegra.ph/Pravila-Linux-Help-10-15

Linux Security
Linux Security
652 участник(ов)

Данная группа принципиально про безопасность и в частности про безопасность Linux. Прочие темы просим обсуждать в профильных чатах.

Linux Gaming RUS
Linux Gaming RUS
28 участник(ов)

Русскоязычный чатик, посвящённый играм на различных дистрибутивах Linux, а также wine, proton Arch Linux RU @ArchLinuxChatRU Gnome RU @gnome_ru