Bash エイリアスの if-then-else

Bash エイリアスの if-then-else

mv通常のフォルダで通常の動作を実行し、gitリポジトリ内で置き換えられるようにエイリアスを作成しようとしています。git mv私は多くの方法を試しました。ステートメントは機能しますが、コマンドが正しく実行されないifだけです。git mv

alias mv='"$(
if [ x`git rev-parse --show-toplevel 2> /dev/null` = x ]; 
    echo mv;  
else 
    echo "git mv"; 
fi)"'

答え1

私は次の機能を使用します:

gitmv()
{
    # If in a git repo - call git mv. otherwise- call mv
    if [ x`git rev-parse --show-toplevel 2> /dev/null` = x ]; 
    then
        mv "$@"  
    else 
        git mv "$@" 
    fi
}

編集する:

alias mv=gitmv

答え2

jhscheerはより良いソリューション(IMHO)を提案しましたが、エイリアスのみを使用して目的のタスクを実行することも依然として可能です。

外部二重引用符が単一のタグを形成し、実行可能ファイルがgit mvないため、エイリアスは機能しません。git mv外部二重引用符を削除すると、エイリアスは正しく機能します。

ところが内側の二重引用符はecho "git mv"役に立ちませんが、害はありません。

テストにすぐに使用できるgitリポジトリはありませんが、次のエイリアスを試しました。

alias foo='$(if [ x"`pwd`" = x"$HOME" ] ; then echo echo; else echo echo foo; fi)'

関連情報