2011-09-19 10 views
5

ユーザメッセージをbashプログラムに保存し、ユーザが次回スクリプトを実行したときにメッセージを表示したい。BASH:ユーザーの入力を求めて将来保管する方法を教えてください。

私は環境変数にメッセージをエクスポートしてもうまくいかないと思っていましたが、動作させることができません。ここで

は、私がこれまで持っているものですが、動作していない:私は間違って何をやっている

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

?これを行うより良い方法がある場合は、私に知らせてください。おそらく、これらのメッセージの履歴を保持し、最新のものを取得するファイルを保持しますか?

答えて

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の相対/絶対パスの問題でしょう別のディレクトリ。

+3

+1これは、隠しファイルを使用するように変更することができます(aで始まります)。〜/ .yourprog.historyと呼んでください。bashスクリプトでこのファイルを読み込み、読み込んで内容を上書きします。 –

+1

echo $ KEEPTHISMESSAGE> message.txt **はmessage.txt **を上書きまたは作成します。 >>を追加するには>>を使用してください。 – Paul

+1

@Paulしかし、彼が質問すれば追加することは好ましくありません。 –

2

スクリプトは、変数をサブプロセスに直接エクスポートすることができます。親プロセスにはエクスポートできません。

あなたはこのようなあなたのスクリプトを呼び出すことによって、親の環境を変更することができます

$ . /path/to/your_script.sh 

ここでスクリプトが変数をエクスポートし、エクスポート文を持つべきであるとexit文を持っていなければなりません。

関連する問題