0

これをgitリポジトリでコマンドラインで実行すると

git status 2> /dev/null | grep -iw 'modified'

私が得る出力

#   modified:   .rvmrc

だから私の仮定は、これを if ステートメントにプラグインすると、コード行を実行する true になるということです

しかし、.bash_profileの一部として関数を作成したとき、これが私が持っているコードです:

## Prompt ##
path="$white\w$reset"
folder_name="$white\W$reset"
git_branch="\$(git branch 2>/dev/null | grep -e '\* ' | sed 's/^..\(.*\)/$red(\1)$reset/')"
rvm="$green(\$(~/.rvm/bin/rvm-prompt i v p))$reset"

# Checks if working tree is dirty
function _git_st {
  if [[ $(git status 2> /dev/null | grep -iw 'modified')  ]]; then
    echo "[x]"
  fi
}
git_st="$yellow`_git_st`$reset"

PS1="$rvm $folder_name $git_branch $git_st \$ "

Xはエコーされません....私は少し迷っており、何が間違っているのかわかりません。

これは私が得る出力です:

(ruby-1.9.2-p290) folder-git (master)  $ git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   .rvmrc
#
no changes added to commit (use "git add" and/or "git commit -a")
(ruby-1.9.2-p290) folder-git (master)  $ 
4

1 に答える 1

1

これは、設定時に評価される変数git_stを使用して設定しているためです。あなたが試すことができるのは、の行で ie try somethingを使用する代わりに、呼び出される関数を呼び出すことです。また、 の新しいバージョンでは、そのようなユーティリティを提供する bash 補完機能が提供 されていることも知っておくとよいでしょう。利用可能な場合は、機能を確認できます。 お役に立てれば! PS:これは SO の投稿で、 を使用するためのいくつかの指針を提供する可能性があります。これはGoogleのクイック検索結果です。PS1PS1_git_stgit_st
PS1="$rvm $folder_name $git_branch \$(_git_st) \$ "
git__git_ps1

__git_ps1

于 2012-09-28T19:10:17.637 に答える