添加目录的简单脚本

添加目录的简单脚本

我试图创建一个监视 /media/user 目录的脚本。当新的 USB 插入时,脚本将运行并将新目录添加到现在使用新 USB 驱动器的程序中。

例如:

for D in ls -l /media/user
do
    directory add -d D
done

目前,该脚本只是字面上添加了/media/user/D与目录中的目录相同的次数,而/media/user不是特定的目录名称/media/user/D

该命令directory add -d添加目录,我希望它添加/media/user/drive1/media/user/drive2

谢谢,我显然是新人!

答案1

这是非常基本的 bash 内容。让我们看一下您的脚本。

for D in ls /l /media/user
do

您使用变量 D 创建一个 for 循环,该循环遍历

  • 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

接下来 id 你的directory程序。它总是D作为最后一个参数被调用。不是价值D,那就是$D。这意味着您可能想要

directory add -d $D

但是,如果目录名称中包含空格,则会将目录名称拆分为两个参数。所以需要引用:

directory add -d "$D"

希望这能让你更好地走上正轨。

答案2

  1. 不要ls在脚本中使用。

  2. 没有“目录”命令;mkdir不过,会创建目录。您可以阅读其“手册”页。

所以尝试将第一行替换为for D in /media/user/*

相关内容