Linux bash语法错误:";(“意外

Linux bash语法错误:";(“意外,linux,macos,bash,scripting,syntax-error,Linux,Macos,Bash,Scripting,Syntax Error,由于某种原因,此功能工作正常,终端正在输出 newbootstrap.sh: 2: Syntax error: "(" unexpected 这是我的代码(第2行是函数MoveToTarget(){) 您使用了错误的语法来声明函数。请改用以下语法: MoveToTarget() { # Function } 或者这个: function MoveToTarget { # function } 但不是两者都有 另外,我后来看到您使用逗号分隔参数(MoveToTarget$So

由于某种原因,此功能工作正常,终端正在输出

newbootstrap.sh: 2: Syntax error: "(" unexpected
这是我的代码(第2行是函数
MoveToTarget(){


您使用了错误的语法来声明函数。请改用以下语法:

MoveToTarget() {
    # Function
}
或者这个:

function MoveToTarget {
    # function
}
但不是两者都有


另外,我后来看到您使用逗号分隔参数(
MoveToTarget$SourcePath,$DestPath
)。这也是一个问题。bash使用空格分隔参数,而不是逗号。删除逗号,您应该是金色的。

我还不熟悉在bash脚本中定义函数。我正在使用版本4.3.11(1)的bash:-在Ubuntu 14.04上发布(x86_64-pc-linux-gnu)

我不知道为什么,但以关键字
function
开头的定义对我来说永远不起作用

定义如下

function check_and_start {
  echo Hello
}
生成错误消息:

Syntax error: "}" unexpected
如果我将
{
放在一个新行中,如:

function my_function
{
    echo Hello.
}
当我运行脚本时,它会打印一个
Hello.
,即使我根本不调用这个函数,这也是我们想要的

我不知道为什么这不起作用,因为我也看过很多教程,它们都在第一行的末尾放了一个开放的花括号。也许我们使用的是bash版本??不管怎样,把它放在这里供您参考

我必须使用C风格的函数定义:

check_and_start() {
  echo $1
}

check_and_start World!
check_and_start Hello,\ World!

它的工作原理与预期一样。

我也遇到了同样的问题。我在Ubuntu上运行脚本时有时使用sh和dash。似乎使用sh运行脚本会导致问题,但使用dash运行脚本效果良好。

如果遇到“语法错误”(“意外”

然后使用“bash”而不是“sh”

例如:


$bash install.sh

谢谢!现在有意义了。我看到了一些这样做的网站。@rsmith命名该网站或它是一个梦想:-)查看“function”关键字中的注释不符合POSIX,查看注释中的“Shell函数定义”也不允许空函数体,这是最令人困惑的部分(因为有人可能缩小范围来测试空身体,但仍然不工作),另请参见
sh
may symlink to/bin/dash,您需要将其作为
bash
运行。我也遇到了同样的问题。删除单词function和添加paran对我来说也很有效。我注意到这两种函数样式在OS X上都可以正常工作。尽管我的OS X运行的是较旧版本的bash。
check_and_start() {
  echo $1
}

check_and_start World!
check_and_start Hello,\ World!