Мой друг показывал мне программу в shell script, которую он сделал, где он открывал программу, она задавала вопрос, он вводил ответ. Затем она закрывалась, но все, что он вводил в качестве ответа, передавалось в текстовый документ.
Я предложил бы запуститься с чего-то как
#!/bin/bash
read -p "Your question here: "
echo "$REPLY" > somefile
, можно читать больше об ударе 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