问题描述
|
由于某种原因,此功能正常运行,终端正在输出
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运行脚本会导致此问题,但是使用破折号运行脚本可以正常工作。