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

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

我认为这可能工作的一种方式是,如果我将消息导出到环境variables,但我不能得到它的工作。

这是我到目前为止,但它不工作:

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

我究竟做错了什么? 如果有更好的方法来做到这一点,请让我知道。 也许保留一个文件,保持这些消息的历史,并获得最新的?

你不能这样使用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相对/绝对路径。

脚本只能将变量直接导出到其子进程。 他们不能导出到父进程。

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

 $ . /path/to/your_script.sh 

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