2011-08-06 15 views
12

Applescript'in küçük bir bölümünü kullanan bir kabuk betiğiyle sorun yaşıyorum. Applescript editörü ile derlediğimde çalışır. Bir kabuk betiği içinde değil. (Işleri)osascript/syntax hatası: Beklenen satır sonu ancak komut adı bulundu. (-2741)

osascript -e 'tell application "System Events" -e 'activate' 

osascript -e 'tell process "Application 10.5" -e 'set frontmost to true' -e 'end tell' 

osascript -e 'delay 1' -e 'keystroke return' -e 'delay 1' -e 'keystroke return' 

end tell 

AppleScript: ait

tell application "System Events" 
activate 
tell process "Application 10.5" 
    set frontmost to true 
end tell 

delay 1 
keystroke return 
delay 1 
keystroke return 

end tell 

[güncellenmiş]/[çözüldü]

Bu sürmüştür bakım İşte

44:49: syntax error: Expected end of line but found command name. (-2741) 23:28: syntax error: Expected end of line but found “after”. (-2741)

kabuk kodudur Ben de içinde çalışmak için applescript değiştirmeye çalışıyorum her türlü sorun cehennem komut dosyası:

## shell script code 

echo "shell script code" 
echo "shell script code" 

## applescript code 

osascript <<EOF 
tell application "Scriptable Text Editor" 
    make new window 
    activate 
    set contents of window 1 to "Hello World!" & return 
end tell 
EOF 

## resume shell script... 

Size bir kabuk içine doğrudan saf AppleScript'i koymak mümkün olduğunu çok serin. ;-)

cevap

1

yerine -e bayrağını kullanmak yapmanız gereken bir uygulama veya süreci söylüyorsun ederseniz yalnızca, aynı zamanda

osascript /path/to/script 

küçük bir metin dosyasında applescript kodunu depolamak ve çağırabilir sadece tek bir şey, bunu şöyle yazabiliriz:

tell process "MyProcess" to perform action. 

Şimdi ben tüm satırlar bağlayacak sanmıyorum çünkü muhtemelen çalışmayacaktır -e bayrağıyla ayrı ayrı hattında çalışan, bunu düşünmek olduğunu ve tek program olarak çalıştırın. Örneğin, sadece bir değişken ayarlamak için osascript -e kullanarak test ettim. Daha sonra değişkeni okumak için ayrı bir osascript -e kullandım ve yapamadı.

[*]

+1

Açıklama için teşekkürler. Aslında çalışmayı değiştirmek için yapılan tüm çalışmalardan geçmek zorunda kalmadan, el yazmasını doğrudan kabuk betiğine koymanın mükemmel bir yolunu buldum. (yukarıyı görmek) - –

5

her biri, bunların arasında (örneğin, değişken) durum kullanmaz böylece osascript (1) komutu, tamamen ayrı bir işlem, ve bu nedenle de tamamen ayrı bir komut dosyası. Birden çok -e seçeneğini kullanarak osascript'da çok satırlı bir komut dosyası oluşturabilirsiniz. Bunlar, komut dosyasını oluşturmak için aralarındaki satır sonu ile birleştirilir. Yeterince uzun bir senaryo için, kendi çözümünüzde kullandığınız gibi ayrı bir dosya veya “burada belge”, gitmek için iyi bir yoldur. Sonra

#!/usr/bin/osascript 
display dialog "hello world" 

... ve: En komut çoğunlukla (! veya tamamen) AppleScript ise

Ayrıca, sadece AppleScript osascript çağıran bir shebang dosyası kullanan bir “kabuk” komut dosyası yapabilirsiniz do shell script'u gerektiği gibi kullanın.