执行多个用户输入bash

时间:2017-08-11 09:31:33

标签: 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

1 个答案:

答案 0 :(得分:0)

您的脚本有几个问题。

首先,您没有正确阅读用户输入。 -p命令的read选项用于提供将用作提示的文本,而不是指定输出变量。输出变量作为位置参数给出。因此,例如,您可以在没有文本提示的情况下将用户输入读入变量directory(之前您可能需要echo),如下所示:read directory;或者您可以打印提示并阅读如下:read -p "Directory: " directory

其次,您的循环迭代number+1次,从0number,包括在内。您可能希望它从1转到number

最后,您touch输出文件的名称不一定是$directory内的文件,但它可能是您当前工作目录中的文件。例如,如果用户输入somedir的{​​{1}}和directory的{​​{1}},则您将创建名为name的文件。因此,最好在目录名和文件名之间加上斜杠。

修复后,您的脚本如下:

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