我正在编写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 :(得分:0)
您的脚本有几个问题。
首先,您没有正确阅读用户输入。 -p
命令的read
选项用于提供将用作提示的文本,而不是指定输出变量。输出变量作为位置参数给出。因此,例如,您可以在没有文本提示的情况下将用户输入读入变量directory
(之前您可能需要echo
),如下所示:read directory
;或者您可以打印提示并阅读如下:read -p "Directory: " directory
。
其次,您的循环迭代number+1
次,从0
到number
,包括在内。您可能希望它从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