Простой скрипт для добавления каталогов

Попробуйте ввести команду в ~/.config/openbox/autostart.

Этот файл выполняется openbox при запуске (для получения дополнительной информации об автозапуске openbox см. Openbox Wiki)

-1
19.06.2021, 19:26
2 ответа

Это очень простая штука для bash. Давайте пройдемся по вашему сценарию.

for D in ls /l /media/user
do

Вы создаете цикл for -с переменной D, который зацикливается

  • ls
  • /l
  • /media/user

Таким образом, он будет выполнен 3 раза.

    directory add -d D

Я не знаю, что должна делать программа directory; Я не знаю. Однако он выполняется 3 раза точно так же, с теми же аргументами:

  • add
  • -d
  • D
done

Конец цикла for -.

Это не совсем то поведение, которое вы описываете; он всегда будет добавлять ровно 3 раза буквально D.

Теперь об улучшениях.

Вы не хотите запускать ровно 3 раза, но хотите запустить для каждого каталога в /media/user. Таким образом, очевидным выбором будет использование $(ls -l /media/user). Теперь я не знаю, какой формат ваша directoryпрограмма ожидает в качестве аргумента, но если это не так

-rw-r--r-- 1 ljm users   27164672 Jun 19 00:30 mikrotik-6.47.10.iso

, то вам, вероятно, не нужна опция -l. Кроме того, синтаксический анализ вывода ls— вообще плохая идея. Итак, вы, вероятно, ищете

for D in /media/user/* 
do

Следующий идентификатор вашей directoryпрограммы. Он всегда вызывается с Dв качестве последнего аргумента. Не значение D, это было бы $D. Это означает, что вы, вероятно, хотите

directory add -d $D

Но если в имени каталога есть пробел, это разделит имя каталога на два аргумента. Так что цитирование обязательно:

directory add -d "$D"

Надеюсь, вам станет лучше.

1
28.07.2021, 11:23
  1. Не используйте lsв сценарии.

  2. Нет команды "каталог"; Однако mkdirсоздает каталоги. Вы можете прочитать его справочную страницу.

Попробуйте заменить первую строку наfor D in /media/user/*

0
28.07.2021, 11:23

Теги

Похожие вопросы