1

bash プロンプトで前のコマンドの終了値をキャプチャするにはどうすればよいですか? 現在のgitブランチも自分のパスに含めたいので、これを行いたいのですが、それが変更されます$?

次のプロンプトでかなりの数のバリエーションを試しました (たとえば、RETVAL への割り当ての周りの `、`、および $()) が、RETVAL はそれらすべてで空です:

PS1="\$(RETVAL=$(echo \$))\$(cd 124123)retval: $RETVAL"

内部の cd コマンドは、git current branch 関数を呼び出すための単なるプレースホルダーであり、後で RETVAL をエコーし​​ます (これは、割り当てられるかどうかをテストするために常に空の文字列です。

類似/関連するその他の質問:

これらのページのような例を使用して、プロンプト コマンドで RETVAL を設定しようとしましたが、プロンプトに何も表示されません。

4

2 に答える 2

1

bash(1) から

PROMPT_COMMAND
  If set, the value is executed as a command  
  prior  to  issuing  each  primary prompt.

PS1の代わりにこれを使用してください。PS1 の割り当ては、割り当て時に 1 回拡張されますが、プロンプトが表示されるたびに拡張されるわけではありません。はい、それが表示されると、いくつかの展開が行われますが、それは制限されています (そして、-style 置換「変数」を使用します - 繰り返しますが、bash(1) を参照してください)。

于 2013-08-12T22:49:16.797 に答える