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

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

尝试运行一些 bash 函数,但不断遇到语法错误:“(”意外。我尝试删除括号、圆括号等等……但似乎没有任何作用。

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

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

答案1

如果您使用 运行脚本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 

答案2

第一的:

语法错误是由于 () 造成的。请像这样从文件中删除 ():

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

或者您也可以运行以下命令来编辑该文件:

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

现在您应该能够运行该文件并获得所需的结果。


或者

您可以将第 2、3 和 4 行添加到文件中~/.bashrc

function hello () {
echo "Hello world"
}

记住,不要用来sudo编辑您的~/.bashrc文件!

将行添加到文件后,运行以下命令重新启动 bash 或“source”你的 .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 

答案3

GNU Bash 是 Ubuntu 终端中默认使用的 shell。但是,当在系统启动时执行脚本时,将使用 dash,因为 dash 就是 /bin/sh。

不起作用-->

$ sh hello.sh

可以工作 -->

$./hello.sh

问题解决了

答案4

根据您的脚本:

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

#call this function as follow:
hello   # Syntax Correct
hello() # Syntax Error

相关内容