2017-09-14 85 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

该诀窍!谢谢你教我新东西。干杯。 –