我想创建一个 shell 脚本,其中包含一个带有路径的变量,我们需要在该路径上创建空的 .txt 文件。
我尝试:
**
path=directory part
touch Test{1..100}.txt
**
但这 100 个文件是在脚本所在的目录中创建的。你能帮我解决这个问题吗?
答案1
一个小评论:path
考虑到与变量名的冲突,可能不是一个很好的选择PATH
.编辑:正如 @Paul_Pedant 在评论中指出的, inzsh
变量path
是保留的,是保存 $PATH 中目录的字符串数组。其他一些 shell,例如bash
,没有这样的保留。
你可以做类似的事情
FILES_HERE=/path/to/dir
touch $FILES_HERE/Test{1..100}.txt
如果您想要制作的文件数量可变,那么您可以touch
在while
循环中使用它们:https://stackoverflow.com/a/31365662/3856731
拥有一个可以接受参数并将文件放在那里的脚本可能会很有用,如果不带参数调用脚本,则默认为 $PWD:
#!/bin/bash
touch ${1:-.}/Test{1..100}.txt
(答案下面的语法说明。)假设保存为test.sh
,并且您已调用chmod +x test.sh
,则可以执行以下操作:
$ ./test.sh
将 100 个空文件放入当前目录中。或者,致电
$ ./test.sh ~/Documents
将它们写入~/Documents
.
编辑:
语法解释:意思是“如果未设置或等于空字符串,则${1:-.}
替换为该脚本的第一个命令行参数 ( $1
) 或默认为.
(aka $pwd
) ”。当您调用可执行脚本时,您提供的参数将被自动枚举:$1
''
./script.sh $1 $2 $3 $4...