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!