Ubuntu bash函数..syntax错误:“(”或“}”意外

试图运行一些bash函数,但一直遇到语法错误:“(”意外。我试过删除括号,括号等等……似乎没什么用。

$ bash --version GNU bash, version 4.3.46(1) release 

 #!/bin/bash function hello () { echo "Hello world" } 

如果您使用sh hello.sh运行脚本,则解释shell将不会是shebang行中提到的解释shell,但将使用/bin/sh 。 对于Debian和Ubuntu,默认情况下这将是dash

因此,要使用bash正确运行脚本,请使用以下任一方法。

 /bin/bash hello.sh 

要么

 chmod +x hello.sh ./hello.sh 

或者你也可以将bash设置为/bin/sh

 dpkg-reconfigure dash 

第一:

语法错误是因为()。 从文件中删除(),如下所示:

 #!/bin/bash function hello { echo "Hello world" } 

或者您可以运行以下命令为您编辑文件:

 sed -i 's/() //g' hello.sh 

您现在应该能够运行具有所需结果的文件。


另外

您可以在~/.bashrc文件中添加第2,3和4行。

 function hello () { echo "Hello world" } 

请记住, 不要使用sudo编辑~/.bashrc文件!

将行添加到文件后,运行以下命令以重新启动bash或“源”您的.bashrc文件:

 . ~/.bashrc 

您现在应该可以运行命令hello并且应该在终端中打印“Hello world”。


也:

您可以编辑该文件来代替:

 #!/bin/bash echo "Hello world" 

并将文件命名为hello并将文件保存到/usr/local/bin

完成所有这些操作后,通过运行以下命令使文件可执行:

 sudo chmod +x /usr/local/bin/hello 

您现在应该可以运行命令hello并且应该在终端中打印“Hello world”。


最后:

第三个选项是将以下行添加到~/.bashrc文件中:

 alias hello='echo "Hello world"' 

然后,使用以下命令获取.bashrc文件:

 . ~/.bashrc 

GNU Bash是默认情况下在Ubuntu终端上使用的shell。 但是,当在系统启动时执行脚本时,则使用dash,因为它是/ bin / sh的破折号。

不行 – >

 $ sh hello.sh 

会工作 – >

 $./hello.sh 

问题解决了

根据你的脚本:

 #!/bin/bash function hello () { echo "Hello world" } #call this function as follow: hello # Syntax Correct hello() # Syntax Error