我正在尝试通过 shell 脚本使用 mkdir 批量创建目录,下面是脚本
#!bin/bash
mkdir /tmp/report*/testfolder*/testdoank
当我运行它时出现错误
-bash: ./makefolder.sh: bin/bash: bad interpreter: No such file or directory
怎么了?
答案1
除了 hashbang 中的无效路径(这是导致错误的原因)之外,mkdir
命令本身也存在问题。
请记住,glob 只能用于列出现存的文件,因此任何看起来像的东西mkdir /tmp/foo*
都会将现有目录作为参数传递给mkdir
.如果/tmp/foo1
存在,它将被传递给mkdir
,然后它会抱怨它已经存在。如果/tmp/foo2
不存在,就会不是被传递给mkdir
,并且不会被创建。您必须执行其他操作才能创建新目录。
目前尚不清楚您要创建什么目录,但假设您想testdoank
在每个匹配的目录下创建一个目录/tmp/report*/testfolder*
,那么可能会这样做:
for dir in /tmp/report*/testfolder*; do
mkdir "$dir"/testdoank
done
答案2
由于您问题的原始格式,您的 shell 声明中似乎缺少“#”字符。然而,实际错误是由于 bash 路径中缺少 / 引起的。
这是在 bash 脚本中确定 shell 的正确方法:
#!/bin/bash
答案3
shell 脚本必须以 开头#!
,而不是简单地以 开头!
。
答案4
使用
mkdir -p 父目录1/子目录1 par2/子目录2/孙子目录2
这将一起创建所有内容,如果需要更复杂的内容请告诉我