submit () {
kaggle c submit -f $@ -m MSG h-and-m-personalized-fashion-recommendations;
}
我想使用上述函数作为向 kaggle 竞赛提交文件的简写,只需键入 即可submit FILE
。作为 Bash 新手,我在设置它时遇到了问题。当我将它放入测试脚本test.sh
并运行该脚本时,该函数运行正常,但当我将其放入时.bashrc
,source .bashrc
我收到以下错误:
bash: .bashrc: line 148: syntax error near unexpected token `('
bash: .bashrc: line 148: `submit () {'
这不是我的代码中其他东西伪装的错误,因为当我只删除该函数(这三行而不触及任何其他行)时,source .bashrc
不再引发错误。
再次,将其放在单独的脚本中并运行该脚本bash test.sh
可以完美运行,因此没有语法错误。 也将函数从 复制并粘贴到test.sh
,.bashrc
因此两者中的函数完全相同。
答案1
问题在于名称。只需更改submit
为ksubmit
即可解决问题。我之前有一个名为 submit 的别名,它可能导致某种冲突,因为 bash 替换了它,而不是意识到它是一个函数定义。我通过从ksubmit
.bashrc 中删除并添加 来重现该问题alias ksubmit="kaggle c list"
。然后source
ing .bashrc
。接着,在同一个 shell 中,从 .bashrc 中删除别名定义并ksubmit
再次添加函数定义,然后获取它。给出上面的语法错误。只需取消别名或启动一个新的 shell。
问题很简单,但很难调试,因为当您没有经验时,错误消息并不能真正指出问题所在。