如何定义别名而不执行其中包含的美元符号?

如何定义别名而不执行其中包含的美元符号?

我有别名:alias gwanip=echo "$(dig +short myip.opendns.com @resolver1.opendns.com)。这工作得很好,除了我刚刚意识到它每次获取 bashrc 时都会执行命令 dig 。如何保持它的功能(即回显我的 ip 调用 gwanip),但每次 bashrc 来源时都不运行它?

答案1

逃避美元符号,或者删除无用的部分echo $( ... ),然后就可以了

alias gwanip="dig +short myip.opendns.com @resolver1.opendns.com"

或者使用 shell 函数代替:

function gwanip {
  dig +short myip.opendns.com @resolver1.opendns.com
}

使用 shell 函数,您甚至可以创建一个更通用的shortdig函数并调用它。

function shortdig {
  dig +short "$1" "$2"
}

function gwanip {
  shortdig "myip.opendns.com" "@resolver1.opendns.com"
}

手册bash包含以下声明

对于几乎所有用途,别名都被 shell 函数取代。

答案2

摆脱美元符号就可以了。

相关内容