尝试运行一些 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)
第一的:
语法错误是因为()。从文件中删除 (),如下所示:
#!/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)