如何使用 shell 脚本在目录中创建目录?

Tsb*_*Tsb 2 bash shell command-line

因此,在尝试这样做了几个小时之后,这就是我想要做的:

编写一个名为 direct.sh 的 bash shell 脚本。此脚本将采用任意数量的命令行参数。您的脚本应该从第一个参数开始创建目录,然后是第一个参数中的第二个目录,然后是第二个参数中的下一个目录,依此类推。

例如 direct.sh dir1 dir2 dir3

应该先创建dir1,然后创建dir1/dir2,最后再创建dir1/dir2/dir3

这是我在 20 小时后所做的。

#!/bin/bash
   
   for i in $@
   do
           mkdir -p $1/$i
   done
Run Code Online (Sandbox Code Playgroud)

我知道这是错误的。请帮忙。

Gor*_*son 5

这可以在一个步骤中完成,因为mkdir -p将在途中创建所有需要的父目录(这就是-p选项所做的)。

#!/bin/bash
IFS=/
mkdir -p "$*"
Run Code Online (Sandbox Code Playgroud)

说明:$*扩展到脚本的所有参数,拼接成一个字符串,由IFS. 这通常是一个空格字符,但在这里它被设置为“/”。它周围的双引号可防止意外的分词或通配符扩展。

因此,如果您运行direct.sh dir1 dir2 dir3,它会执行mkdir -p "dir1/dir2/dir3",这将创建所有 3 个目录级别(或至少,那些尚不存在的目录)。

顺便说一句,一般你应该IFS在像这样改变它后恢复正常。但是由于脚本中没有任何可能会被弄乱的内容,并且在脚本中更改它不会影响父进程(用于运行脚本的 shell),因此在这种情况下无需将其重新设置。