2017-09-14 83 views
0

我厭倦了爲任何故事分支(Git)追捕Jira門票,所以我製作了這個小腳本並將其放入我的.bash_profile在切換git分支時從.bash_profile重新加載bash腳本

alias ojt="open https://mycompanyname.atlassian.net/browse/MARMO-"$(git symbolic-ref HEAD | sed s/[^0-9]*//g)""

正常工作,直到我切換分支: git checkout 1234

開關支路後,我用ojt alias命令,它會打開從以前的分支我是的吉拉票。

如果我重新加載source ~/.bash_profile,它的工作原理。我不想重新加載整個配置文件。

回答

3

試試這個:

alias ojt="open https://mycompanyname.atlassian.net/browse/MARMO-"'$(git symbolic-ref HEAD | sed s/[^0-9]*//g)' 

如果你把雙引號或不包圍引號的子shell($(...)),將立即進行評估(即,每當你的源.bash_profile)。如果你用單引號將它括起來,它將被懶惰地評估(即,每當你調用別名時)。

實際上,因爲你不需要任何其他值將立即展開,您應該能夠只是把整個事情在單引號:

alias ojt='open https://mycompanyname.atlassian.net/browse/MARMO-$(git symbolic-ref HEAD | sed s/[^0-9]*//g)' 

注意,如果混合擴展和懶惰值,您必須將這些字符串與不同的引號連接起來才能工作;如果你只是將它們嵌套在一起,你會在你的字符串中得到額外的引號字符,並且最外面的引號集將被用來確定是否擴展變量和子殼。

例子:

VAR=abc 
echo "$VAR $VAR"  # abc abc 
echo '$VAR $VAR'  # $VAR $VAR 
echo "$VAR '$VAR'" # abc 'abc' 
echo '$VAR "$VAR"' # $VAR "$VAR" 
echo "$VAR "'$VAR' # abc $VAR 
+0

該訣竅!謝謝你教我新東西。乾杯。 –