Shell 从用户处读取多个条目以创建文件
我试图创建一个手动创建的文件,方法是打开一个vi编辑器,然后Esc+I,然后向其中粘贴一列条目,然后Esc:wq!,我甚至不希望用户打开vi编辑器,脚本应该输入数据列表,它应该创建文件并向其中添加条目Shell 从用户处读取多个条目以创建文件,shell,unix,while-loop,text-processing,Shell,Unix,While Loop,Text Processing,我试图创建一个手动创建的文件,方法是打开一个vi编辑器,然后Esc+I,然后向其中粘贴一列条目,然后Esc:wq!,我甚至不希望用户打开vi编辑器,脚本应该输入数据列表,它应该创建文件并向其中添加条目 count=1 read total while [ "$count" -le "$total" ]; do read -p Name ; echo $Name > /tmp/cl; count=$(($count + 1)); done 但它不起作用,因为它希望在每次输入后输入一个En
count=1
read total
while [ "$count" -le "$total" ]; do read -p Name ; echo $Name > /tmp/cl; count=$(($count + 1)); done
但它不起作用,因为它希望在每次输入后输入一个Enter,而当我在第一个“Name”提示符下粘贴一个输出时,它并不存在,而且我甚至不想输入名称的总数。好的,您可以使用以下命令直接将输出粘贴到文件中,而不是编写脚本:
cat > filename
Right Click
Ctlr+C
在运行之前制作rm行以清除文件内容,可能您不需要它。 因为您没有提到shell变量,所以在本例中我更喜欢使用sh 脚本的问题可能是您使用了>操作符而不是>>。>清除文件并将文本放入其中。在下一个循环中,它再次清除并将变量内容再次放入 我用它代替了while,因为它掠夺速度更快,代码更小
#!/bin/sh
read -p "Total: " total # Input for loop cycle count
rm ./temp.txt # delete old file before run
for (( i=1 ; i <= $total ; i++ ))
do
read -p "Name: " Name # get name
echo $Name >> ./temp.txt # put it into file named temp.txt
done
这不起作用,因为问题出在其他地方,在Unix机器中,如果您只需右键单击,它会转储屏幕上复制的所有数据,我正在尝试使用此功能一次性创建文件。对不起,我没有抓住您问题的重点。请检查我的更新。这也不起作用,因为当我键入“粘贴命令”,然后右键单击粘贴它所推送的复制数据时,它将提示我输入下一个命令,粘贴为文本也将进入文件。更新了答案。。。之前的答案并不那么清楚。
#!/bin/sh
rm ./temp.txt # delete old file before run
while read inputline
do
[[ $inputline == "" ]] && exit 0
echo "$inputline" >> ./temp.txt
done