尝试运行一些 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