命令别名中带有regex的语法错误

时间:2015-08-05 18:04:24

标签: regex bash alias

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

别名是

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;"

实际输出是:

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

1 个答案:

答案 0 :(得分:1)

你真的不需要别名,所有引用都是逃避的。

只需这个功能就足够了:

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

然后你可以打电话:

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