2

PS1何かに応じて、別の色で何かを出力する関数を呼び出そうとしています。

  • この場合$?は、プログラムの終了ステータスです。
  • 終了ステータスが 以外の場合、この関数に赤いテキストを出力させようとしています0
  • 私はこれのすべての可能なバリエーション、条件でその変数を表す方法などを試しましたが、うまくいきません。

私が期待するものを出力する代わりに、常に$LREDthis の 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";'
4

1 に答える 1