PS1
何かに応じて、別の色で何かを出力する関数を呼び出そうとしています。
- この場合
$?
は、プログラムの終了ステータスです。 - 終了ステータスが 以外の場合、この関数に赤いテキストを出力させようとしています
0
。 - 私はこれのすべての可能なバリエーション、条件でその変数を表す方法などを試しましたが、うまくいきません。
私が期待するものを出力する代わりに、常に$LRED
this の 1 つのバリエーションIF
、または常にthis$HII
の別のバリエーションのいずれかIF
です。
関連するBASH
ものはすべて以下に掲載されていますが、何か洞察を提供できますか?
...
# Custom Colour Alias
NM="\[\033[0;38m\]" # No background and white lines
HI="\[\033[1;36m\]" # Username colour
HII="\[\033[0;37m\]" # Name colour
SI="\[\033[1;32m\]" # Directory colour
IN="\[\033[0m\]" # Command input color
LRED="\[\033[1;31m\]"
BRW="\[\033[0;33m\]"
...
exitStatus ()
{
if [ $? -ne 0 ]
then
echo "$LRED\$?"
else
echo "\$?"
fi
#echo \$?
}
...
export PS1="\n$HII[ $LRED\u $SI\w$NM $HII]\n[ \! / \# / $(exitStatus) $HII]$LRED $ $IN"
ソリューションに基づくコード
これは、以下の受け入れられた回答に基づいて私が行ったことです。
# Before Prompt
export PROMPT_COMMAND='EXSO=$?;\
if [[ $EXSO != 0 ]];\
then\
ERRMSG="$LRED$EXSO";\
else\
ERRMSG="$EXSO";\
fi;\
PS1="\n$HII[ $LRED\u $SI\W$NM $HII\! / \# / $ERRMSG $HII] $SI$ $IN";'