2017-08-11 74 views
2

我正在写bash脚本,其中它要求特定的目录,并在执行脚本时进行。 然后它询问我的人数并进入循环。我希望它能够创建一个文本文件,其中包含目录和输入人员的姓名。执行多个用户输入bash

说到使用触摸创建文件不起作用。

我错过了什么。

echo "Please enter directory\n"  
read -p directory  
mkdir -p $directory/name  

echo "Please enter number of persons\n"  
read -p number  

for ((i = 0; i <= number; i++))  

do  
    echo "Please enter person $i :\n"  
    read -p person  
    touch $directory$person.txt  

done 
+0

你能[编辑问题](https://stackoverflow.com/posts/45631651/edit)突出显示实际问题是什么?什么不适合你? – arco444

+0

目前还不清楚你在问什么。 – janos

+0

我编辑过,以突出问题。 – Mike

回答

0

您的脚本有几个问题。

首先,您没有正确读取用户输入。 read命令的-p选项用于提供将用作提示的文本,而不用于指定输出变量。输出变量是作为位置参数给出的。因此,例如,您可以在没有文本提示的情况下将用户输入读入变量directory(然后您可能需要以前的echo),如下所示:read directory;或者您可以打印提示并像这样读取:read -p "Directory: " directory。其次,你的循环迭代number+1次,从0number,包括number。你可能希望它从1number

最后,输入文件的名称touch ing不一定是$directory中的文件,但它可能是当前工作目录中的文件。例如,如果用户为directoryname输入somedirperson,那么您将创建一个名为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 
相关问题