是什么导致了这个bash语法错误?
此命令在命令行上运行良好是什么导致了这个bash语法错误?,bash,Bash,此命令在命令行上运行良好 if g++ -std=c++11 main.cpp ; then ./a.out; fi 但当我尝试将它作为函数添加到.bashrc时,它失败了 function cgo() { if g++ -std=c++11 "$1" ; then ./a.out; fi } >$ cgo main.cpp bash: syntax error near unexpected token `main.cpp' 我做错了什么?}并不特别;您需要使用显式终止前面的命令如
if g++ -std=c++11 main.cpp ; then ./a.out; fi
但当我尝试将它作为函数添加到.bashrc时,它失败了
function cgo() { if g++ -std=c++11 "$1" ; then ./a.out; fi }
>$ cgo main.cpp
bash: syntax error near unexpected token `main.cpp'
我做错了什么?
}
并不特别;您需要使用显式终止前面的命令代码>如果将函数定义放在一行上
function cgo () { if g++ -std=c++11 "$1"; then ./a.out; fi; }
当使用{brates}
时,在右大括号之前需要有一个换行符或分号。对于一行,这意味着您需要一个分号
function cgo() { if g++ -std=c++11 "$1" ; then ./a.out; fi; }
# ........................................................^
文档:在嵌套复合命令的情况下,不需要代码>。示例:{if true;then echo hello;fi}
和{1..3}中i的;如果是真的,就去做;然后回显“$i”;fi done
和{for i in{1..3};do:;done}
,与{1..3}中i的{echo hello;}
和相比;做回显“$i”;完成
其中
是强制性的。起初这些解决方案对我不起作用,但后来我尝试打开一个新的终端,它们确实起了作用。现在,我猜谜团是为什么命令“~/.bashrc”无法在我最初的终端会话中重新加载我的bashrc!