用户将被询问 2 个变量,它们是文件夹的名称和他们想要创建的文件夹的数量。所以如果用户输入 sea 和 3,输出应该是:sea, sea2, sea3
read -p "Enter the name of the folder: " NAMEFOLDER
read -p "How many copies of this folder do you want?: " NUMFOLDER
i=0
until [ $i -gt $NUMFOLDER ]
do
mkdir $(($NAMEFOLDER))
((i=i+1))
done
然后我遇到了这个问题
"mkdir: cannot create directory ‘0’: File exists"
我被困在这一点上。
首先,不要让你的脚本在运行时读取输入。这对您的用户来说很难使用,因为拼写错误是不可避免的并且难以修复,并且也意味着该任务不能轻易地重复和自动化。相反,将名称和编号作为命令行参数。
其次,对局部 shell 变量名使用 CAPS 是不好的编码风格,因为按照惯例,全局环境变量是大写的,这可能导致意外的命名冲突和难以调试的问题。
现在,您真正的问题是您使用
$((foo))
的意思是“foo
视为数学表达式并返回其结果”。例如:当然,整个脚本也没有任何意义,因为您不能创建多个具有相同名称的文件或目录。也许您打算添加一个计数器?
也许是这样的:
你这样执行:
并会导致:
如果您希望创建的第一个目录没有后缀,您可以这样做:
结果是: