bash语法错误:“”意外

问题描述

| 由于某种原因,此功能正常运行,终端正在输出
newbootstrap.sh: 2: Syntax error: \"(\" unexpected
这是我的代码(第2行是函数
MoveToTarget() {
#!/bin/bash  
function MoveToTarget() {
    #This takes to 2 arguments: source and target
    cp -r -f \"$1\" \"$2\"
    rm -r -f \"$1\"
}

function WaitForProcessToEnd() {
    #This takes 1 argument. The PID to wait for
    #Unlike the AutoIt version,this sleeps 1 second
    while [ $(kill -0 \"$1\") ]; do
            sleep 1
    done
}

function RunApplication() {
    #This takes 1 application,the path to the thing to execute
    exec \"$1\"
}

#our main code block
pid=\"$1\"
SourcePath=\"$2\"
DestPath=\"$3\"
ToExecute=\"$4\"
WaitForProcessToEnd $pid
MoveToTarget $SourcePath,$DestPath
RunApplication $ToExecute
exit
    

解决方法

        您使用错误的语法来声明函数。使用此代替:
MoveToTarget() {
    # Function
}
或这个:
function MoveToTarget {
    # function
}
但不是两者。 另外,我看到稍后您会使用逗号分隔参数(
MoveToTarget $SourcePath,$DestPath
)。这也是一个问题。 bash使用空格分隔参数,而不是逗号。删除逗号,您应该会很高兴。     ,        我还是bash脚本中定义函数的新手。我正在Ubuntu 14.04上使用版本4.3.11(1):-release(x86_64-pc-linux-gnu)的bash。 我不知道为什么,但是以关键字
function
开头的定义对我却不起作用。 如下定义
function check_and_start {
  echo Hello
}
产生错误信息:
Syntax error: \"}\" unexpected
如果我将ѭ9放在新行上,例如:
function my_function
{
    echo Hello.
}
即使我根本不调用此函数,运行脚本时,它也会显示
Hello.
,这也是我们想要的。 我不知道为什么这行不通,因为我也看了很多教程,他们都在第一行的末尾放了花括号。也许这是我们使用的bash版本?无论如何,只需将其放在此处以供参考。 我必须使用C样式的函数定义:
check_and_start() {
  echo $1
}

check_and_start World!
check_and_start Hello,\\ World!
并按预期工作。     ,        我遇到过同样的问题。我在Ubuntu上运行脚本,有时使用sh vs dash。似乎使用sh运行脚本会导致此问题,但是使用破折号运行脚本可以正常工作。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...