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

Jam*_*s A 13 bash scripts

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

$ bash --version
GNU bash, version 4.3.46(1) release
Run Code Online (Sandbox Code Playgroud)
#!/bin/bash
function hello () {
echo "Hello world"
}
Run Code Online (Sandbox Code Playgroud)

Tho*_*mas 22

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

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

/bin/bash hello.sh
Run Code Online (Sandbox Code Playgroud)

或者

chmod +x hello.sh
./hello.sh
Run Code Online (Sandbox Code Playgroud)

或者,您也可以设置bash/bin/sh.

dpkg-reconfigure dash 
Run Code Online (Sandbox Code Playgroud)


mch*_*hid 5

第一的:

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

#!/bin/bash
function hello {
echo "Hello world"
}
Run Code Online (Sandbox Code Playgroud)

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

sed -i 's/() //g' hello.sh
Run Code Online (Sandbox Code Playgroud)

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


或者

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

function hello () {
echo "Hello world"
}
Run Code Online (Sandbox Code Playgroud)

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

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

. ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

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


还:

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

#!/bin/bash
echo "Hello world"
Run Code Online (Sandbox Code Playgroud)

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

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

sudo chmod +x /usr/local/bin/hello
Run Code Online (Sandbox Code Playgroud)

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


最后:

第三种选择是将以下行添加到您的~/.bashrc文件中:

alias hello='echo "Hello world"'
Run Code Online (Sandbox Code Playgroud)

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

. ~/.bashrc 
Run Code Online (Sandbox Code Playgroud)