BASH:如何询问用户输入并将其存储在未来?

时间:2011-09-19 23:38:27

标签: linux bash

我想在bash程序中存储用户消息,然后在用户下次运行脚本时显示该消息。

我认为这可能有用的一种方法是将消息导出到环境变量,但我无法使其工作。

这是我到目前为止所做的,但它不起作用:

echo "Last message was: $KEEPTHISMESSAGE"
echo "Type the new message that you want to enter, followed by [ENTER]:"
read KEEPTHISMESSAGE
export KEEPTHISMESSAGE

我做错了什么?如果有更好的方法,请告诉我。也许保留一个文件,保存这些消息的历史记录并获取最新消息?

2 个答案:

答案 0 :(得分:7)

您不能以这种方式使用EXPORT。它只导出到从调用脚本开始的进程。您必须将消息存储在文件系统上的文件中,并在用户下次执行脚本时加载它。非常简单:

echo "Last message was: $(cat message.txt)"
echo "Type the new message that you want to enter, followed by [ENTER]:"
read KEEPTHISMESSAGE
echo $KEEPTHISMESSAGE > message.txt

你必须弄清楚第一次发生的事情(当message.txt不存在时),如果你在另一个目录中运行脚本,则问题是message.txt的相对/绝对路径问题

答案 1 :(得分:2)

脚本只能直接将变量导出到子流程。它们无法导出到父进程。

您可以通过调用脚本来改变父母环境:

$ . /path/to/your_script.sh

这里你的脚本应该有一个export语句来导出变量,并且不能有exit语句。