2010-03-13 24 views
1

我試圖建立一個協同自動啓動腳本按照this article,外殼是給我的錯誤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 
    "[email protected]" 
    fi 
    sleep 3 
done 
} 

StartService() 
{ 
ConsoleMessage "Starting Synergy" 
KeepAlive "${run[@]}" & 
} 

StopService() 
{ 
return 0 
} 

RestartService() 
{ 
return 0 
} 

RunService "$1" 

當被拋出的錯誤,「期間」突出顯示該線路上. /etc/rc.common

有我丟失的東西嗎?該文件

+0

你已經發布的代碼是不是AppleScript的,這是一個shell腳本。如果鏈接中的方向談論創建「腳本」,他們只是一個文本文件。 – Isaac 2010-03-13 21:46:02

+0

@rock:你用什麼程序來編寫腳本? – outis 2010-03-13 21:52:13

+0

@Isaac,我沒有意識到...我用什麼擴展[.txt]? @outis,我使用AppleScript編輯器。 – 2010-03-13 21:59:13

回答

1

嘗試DOS2UNIX的,如果你一直在編輯的Windows機器上。

+0

這是@艾薩克的回答以及你的回答。謝謝...現在工作。 – 2010-03-13 22:22:05

1

注意特定的問題是line endings。 Unixen使用line-feed字符(LF),蘋果傳統上使用carriage-return(CR),MS操作系統使用CR LF。如果使用錯誤的行結束符,shell將整個shell腳本視爲單行; CR不被認爲是空白,並且是token。因此,外殼「預計結束行,但發現未知的令牌」的消息。通過dos2unix運行腳本修復了行尾。

閱讀蘋果的 「Shell Scripting Primer」。除此之外,它還告訴您如何使用Text Edit.app(以及命令行中的pico和nano)來編寫shell腳本。或者,學會使用AquamacsVim for OS X

+0

您鏈接的MacVim版本相當陳舊。目前的(雖然無關)的MacVim是在http://code.google.com/p/macvim/ – Isaac 2010-03-14 06:01:21

+0

感謝。更新。 – outis 2010-03-14 18:13:31