我想在bash程序中存储用户消息,然后在用户下次运行脚本时显示该消息。
我认为这可能有用的一种方法是将消息导出到环境变量,但我无法使其工作。
这是我到目前为止所做的,但它不起作用:
echo "Last message was: $KEEPTHISMESSAGE"
echo "Type the new message that you want to enter, followed by [ENTER]:"
read KEEPTHISMESSAGE
export KEEPTHISMESSAGE
我做错了什么?如果有更好的方法,请告诉我。也许保留一个文件,保存这些消息的历史记录并获取最新消息?
答案 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语句。