我正在尝试根据this article构建一个Synergy AutoStart脚本,shell正在给我错误
语法错误
预计行尾等,但发现 未知令牌
这是我正在制作的剧本......
#!/bin/sh
. /etc/rc.common
run=(/usr/local/bin/synergyc -n $(hostname -s) -1 -f 192.168.0.108)
KeepAlive ()
{
proc=${1##*/}
while [ -x "$1" ]
do
if ! ps axco command | grep -q "^${proc}\$"
then
"$@"
fi
sleep 3
done
}
StartService ()
{
ConsoleMessage "Starting Synergy"
KeepAlive "${run[@]}" &
}
StopService ()
{
return 0
}
RestartService ()
{
return 0
}
RunService "$1"
当抛出错误时,“句号”会在此行. /etc/rc.common
这里有什么我想念的吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
请注意,特定问题是line endings。 Unixen使用line-feed字符(LF),Mac传统上使用carriage-return(CR),MS OS使用CR LF。使用错误的行结尾,shell将整个shell脚本视为单行; CR不被视为空格并且token化。因此,消息说shell“预期行尾[...]但发现未知令牌”。通过dos2unix运行脚本可修复行结尾。
阅读Apple的“Shell Scripting Primer”。除此之外,它还告诉您如何使用Text Edit.app(以及命令行中的pico和nano)编写shell脚本。或者,学习使用Aquamacs或Vim for OS X。