关于bash:命令别名中带有regex的语法错误

Syntax error with regex in command alias

本问题已经有最佳答案,请猛点这里访问。

我在UNIX中创建了一个别名,其中正则表达式创建了问题。
我的意图是使用别名作为_enable -input,参数应该用" -"传递。
没有问题所在。

别名是

1
alias _enable="function _enable() { [[ $1 =~ ^- ]] || { echo "Use hyphen (-) before nodes."; return 1; } ; [[ $# = 1 ]] && { NODE=`echo ${1##*-}`; } || { NODE=""; } ; $HOME/bin/command --command=enable --node=$NODE; }; _enable $1;"

实际输出是:

1
2
3
SS-04:~ # _enable 1
-bash: conditional binary operator expected
-bash: syntax error near `^-'


你真的不需要别名和所有引用逃脱。

只需这个功能就足够了:

1
2
3
4
5
_enable() {
   [[ $1 == -* ]] || { echo"Use hyphen (-) before nodes."; return 1; }
   [[ $# -eq 1 ]] && NODE="${1##*-}" || NODE=""
   $HOME/bin/command --command=enable --node="$NODE"
}

然后你可以打电话:

1
2
3
4
_enable 1
Use hyphen (-) before nodes.
echo $?
1