Как записать пользовательский ввод в файл в сценарии оболочки?

Мой друг показывал мне программу в скрипте, где он делал, где он должен был открыть программу, он задавал вопрос, он набирал ответ. Затем он закроется, но все, что он напечатал как ответ, будет перенесено в текстовый документ.

3 ответа

Я бы предложил начать с чего-то вроде

#!/bin/bash

read -p "Your question here: "

echo "$REPLY" > somefile

Вы можете прочитать больше о Bash's read Команда либо со страницы руководства (man bash) или набрав help read в командной строке.

Если ответ не нуждается в проверке, достаточно сделать это в одну строку:

$ 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 это забавная часть - без указания файла, кошка будет читать stdin поток по умолчанию (который в этом случае является вашей клавиатурой) и попугай его stdout, Какие > делает это отправить stdout поток в файл. Итак, в основном, мы переписали потоки данных, чтобы перейти от клавиатуры к файлу, а не с клавиатуры на экран терминала, всего за несколько символов текста.

Это не обязательно делать в одной только оболочке, это можно сделать с помощью других инструментов, таких как 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
#/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
Другие вопросы по тегам