Bash
Bash Alias 中的 if-then-else
我正在嘗試為它創建一個別名,
mv
以便它在普通文件夾中執行正常行為,並被git mv
內部 git 儲存庫替換。我嘗試了很多方法。該if
語句有效,只有命令git mv
將無法正確執行。alias mv='"$( if [ x`git rev-parse --show-toplevel 2> /dev/null` = x ]; echo mv; else echo "git mv"; fi)"'
我會為此使用一個函式,如下所示:
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
儘管 jhscheer 提出了一個更好的解決方案(恕我直言),但仍然可以僅使用別名來實現您想要做的事情。
您的別名不起作用,因為外部雙引號會
git mv
產生單個標記,並且您沒有git mv
執行檔。如果您刪除外部雙引號,您的別名應該可以正常工作。順便說一句,內部雙引號 in
echo "git mv"
是無用的,但無害。我沒有可立即測試的 git 儲存庫,但我只是嘗試使用以下別名:
alias foo='$(if [ x"`pwd`" = x"$HOME" ] ; then echo echo; else echo echo foo; fi)'