您的脚本有几个问题。
首先,您没有正确读取用户输入。 read
命令的-p
选项用于提供将用作提示的文本,而不用于指定输出变量。输出变量是作为位置参数给出的。因此,例如,您可以在没有文本提示的情况下将用户输入读入变量directory
(然后您可能需要以前的echo
),如下所示:read directory
;或者您可以打印提示并像这样读取:read -p "Directory: " directory
。其次,你的循环迭代number+1
次,从0
到number
,包括number
。你可能希望它从1
到number
。
最后,输入文件的名称touch
ing不一定是$directory
中的文件,但它可能是当前工作目录中的文件。例如,如果用户为directory
和name
输入somedir
为person
,那么您将创建一个名为somedirname.txt
的文件。所以,最好在目录名称和文件名称之间加上斜杠。
这些固定的,你的脚本是这样的:
#!/bin/bash
read -p "Please enter directory: " directory
mkdir -p "$directory/name"
read -p "Please enter number of persons: " number
for ((i = 1; i <= number; i++)); do
read -p "Please enter person $i: " person
touch "$directory/name/$person.txt"
done
运行它,比如像这样:
$ bash script
Please enter directory: /tmp
Please enter number of persons: 3
Please enter person 1: Huey
Please enter person 2: Dewey
Please enter person 3: Louie
将创建一个目录/tmp/name
,和文件吧:
$ find /tmp/name
/tmp/name
/tmp/name/Huey.txt
/tmp/name/Dewey.txt
/tmp/name/Louie.txt
你能[编辑问题](https://stackoverflow.com/posts/45631651/edit)突出显示实际问题是什么?什么不适合你? – arco444
目前还不清楚你在问什么。 – janos
我编辑过,以突出问题。 – Mike