bash_profile 与终端中的命令行为不同

bash_profile 与终端中的命令行为不同

git branch -r | awk '{print $1}'在终端中输入:

origin/HEAD
origin/master

alias test1="git branch -r | awk '{print $1}'"在收益率中.bash_profile

  origin/HEAD -> origin/master
  origin/master

为什么awk '{print $1}'在 中被忽略.bash_profile

答案1

定义别名:

$ alias test1="git branch -r | awk '{print $1}'"

然后看它的定义:

$ alias test1
alias test1='git branch -r | awk '\''{print }'\'''

看看怎么$1消失的?那是因为您的别名定义用双引号引起来。这意味着 shell 扩展了$1定义别名的字符串中的变量。它的值是空的。

在别名定义周围使用单引号、转义$或编写正确的函数:

test1 () {
    git branch -r | awk '{ print $1 }'
}

一个好的经验法则可能是这样的:如果您的别名比单个命令更复杂(并且需要特殊引用等),则将其编写为 shell 函数。

相关内容