如何在 shell 脚本中将用户输入记录到文件中?

如何在 shell 脚本中将用户输入记录到文件中?

我的朋友向我展示了一个 shell 脚本程序,他打开该程序,程序会提出一个问题,然后他输入答案。然后程序会关闭,但他输入的答案都会被传输到文本文档中。

答案1

我建议先从类似

#!/bin/bash

read -p "Your question here: "

echo "$REPLY" > somefile

您可以read从手册页 ( ) 或在 shell 提示符下man bash输入来了解有关 bash 命令的更多信息。help read

答案2

如果不需要测试响应,则仅用一行即可完成:

$ echo "Enter blah" && cat > output.txt
Enter blah
blah 
# Press Ctrl+D to stop recording stuff into file
$ cat output.txt
blah

这里发生的事情是我们用来echo在屏幕上输出文本。&&简单来说就是布尔运算符,意思是“如果前一个命令成功,则执行第二个命令”。&&在这里并不重要,也;可以同样使用。cat > output.txt有趣的部分是 - 如果不指定文件,cat 将stdin默认读取流(在本例中是你的键盘)并将其重复给stdout。 所做>的是将stdout流发送到文件。 所以基本上,我们重新连接了数据流,使其从键盘传输到文件,而不是从键盘传输到终端屏幕,只需几个文本字符。

这不一定需要单独在 shell 中完成,可以使用其他工具来完成,例如python

$ python -c 'import sys;print("Say hello");f=open("output.txt","w");[f.write(l) for l in sys.stdin.readlines()];f.close()'       
Say hello
Hello AskUbuntu
# press Ctrl+D
$ cat output.txt
Hello AskUbuntu

答案3

#/bin/bash
#Here you can ask your question just edit "Your Question".
echo "Your Question"
#"read" this command reads input from user and store in text what ever 
#like word "answer" used here as example.
read answer
#"$answer" this input was taken by user from "read"  and stored in word answer . echo prints all words stored in $answer to file like anything.txt or any extention you can use.  
echo $answer > any_file.txt

相关内容