我想在我的$ GOPATH / bin目录中运行可执行文件,而不必 cd ,所以我将以下内容添加到我的.profile文件中:
export GOBIN=$HOME/go-workspace/bin
function _rungo() { "$GOBIN" "@$1" }
alias rungo='_rungo'
别名定义在第28行。 我的想法是在命令行上输入 rungo executable_name 来运行可执行文件。
当我登录我的帐户时,收到以下错误:
line 31: syntax error: unexpected end of file
如果我注释掉别名定义,我会收到此错误
line 29: syntax error: unexpected end of file
显然我的函数定义不正确。
我做错了什么?
答案 0 :(得分:1)
如果将bash函数声明为单行,则在结束函数之前需要包含;
,因此工作函数应为
function _rungo() { "$GOBIN" "@$1" ;}
编辑:
回答以下问题:
感谢Karoly和Zuzzuc。我决定将这个功能保持为单行,所以我添加了;当我发出像" rungo你好"我收到一条消息,说/ home / smurphy / go-workspace / bin是一个目录我可以做我想做的事吗?
好吧,首先你不需要写function myFunction()
,因为myFunction()
同样适用。
转到真正的问题,你不需要制作别名rungo,只需将函数命名为rungo即可。创建别名只是浪费时间,因为它会将其输入重定向到您创建的函数。
部分失败的原因,是因为别名可以不接受参数。我也不确定你是否需要" @" in" @ $ 1"。
我也认为最好使用exec "$GOBIN/$1"
而不只是"$GOBIN" "@$1"
。
<强>解决方案强>
更改
export GOBIN=$HOME/go-workspace/bin
function _rungo() { "$GOBIN" "@$1" }
alias rungo='_rungo'
到
export GOBIN=$HOME/go-workspace/bin
function rungo() { exec "$GOBIN/$1" ;}
希望这有帮助!
答案 1 :(得分:0)
功能关闭括号必须在新行中。或者,使用;
。
为了说明问题,请看这个例子:
function rungo() { echo X }
}
rungo # outputs: X }