applescript ปิดตัวเอง


0

ดังนั้นฉันใหม่ทั้งหมดเพื่อ applescript ..

โดยทั่วไปฉันต้องการ applescript.app ของฉันเพื่อรันเชลล์สคริปต์จากนั้นออก

do shell script "/usr/local/groovy/bin/groovyConsole"

สคริปต์ข้างต้นเปิด groovyConsole ได้ดี แต่ applescript.app ของฉันยังคงทำงานอยู่ - ฉันต้องการให้ปิดตัวเองหลังจากรันเชลล์สคริปต์ ....

ความช่วยเหลือใด ๆ จะดีมาก!

คำตอบ:


2

คุณสามารถให้เชลล์รันโปรแกรม“ ในพื้นหลัง” (โดยต่อท้าย & ) แต่ ทำสคริปต์เชลล์ จะยังคงรอจนกว่าทุกกระบวนการจะปิดอินสแตนซ์ของไฟล์ descriptors ที่เปิดขึ้นสำหรับ stdout และ stderr ของโปรแกรม การเปลี่ยนเส้นทางจะทำให้พอเพียง

do shell script "/usr/local/groovy/bin/groovyConsole >/dev/null 2>&1 &"

ฉันไม่แน่ใจว่าจำเป็นต้องทำการเปลี่ยนเส้นทางเอาต์พุต - บางครั้ง มันทำงานได้โดยไม่ต้อง
Daniel Beck

@Daniel: มันเป็นสิ่งจำเป็นสำหรับกรณีทั่วไป มันไม่จำเป็นสำหรับตัวอย่างเฉพาะของคุณเพราะ เปิด (จริง ๆ แล้ว LaunchServices) ทำหน้าที่ของ“ แบ็คกราวน์” และทำให้แน่ใจว่า stdout และ stderr ของกระบวนการที่ในที่สุดปล่อยให้การทำงานถูกส่งไปที่อื่น (ต่อผู้ใช้ต่อคน launchd ใน 10.6)
Chris Johnsen

ฉันหมายถึงตัวอย่างแรกของฉันเรียกเลขฐานสองโดยตรง open แตกต่างกันมากจริง ฉันไม่เห็นว่ามีอะไรผิดปกติกับคำตอบของเทรเวอร์
Daniel Beck

1
@Daniel: ตัวอย่างแรกของคุณใช้ Automator ของมัน เรียกใช้ Shell Script ไม่ทำเช่นเดียวกัน“ รอให้อินสแตนซ์ทั้งหมดของ stdout / stderr ไปปิด” สิ่งที่ AppleScript ทำสคริปต์เชลล์ ทำ. ตัวอย่าง: do shell script "sleep 5 &" ใช้เวลา 5 วินาทีในการส่งคืน แต่ do shell script "sleep 5 >/dev/null 2>&1 &" ส่งคืนโดยเร็วที่สุดเสมอ เชลล์ออกและ นอน ทำงานในพื้นหลังในทั้งสองกรณี อย่างไรก็ตามในกรณีแรก นอน ได้รับมรดก fds กับที่ ทำสคริปต์เชลล์ กำลังรอ. คำตอบของ Trevor อาจใช้ได้ แต่ขึ้นอยู่กับพฤติกรรมของ groovyConsole .
Chris Johnsen

เป็นเรื่องดีที่รู้ ขอขอบคุณสำหรับการชี้แจง!
Daniel Beck

0

แค่คิดลองเพิ่มเครื่องหมายแอมเปอร์แซนด์และที่ส่วนท้ายของสคริปต์

do shell script "/usr/local/groovy/bin/groovyConsole &"

มันแบ็คกราวน์คำสั่งและจะนำคุณกลับไปที่พรอมต์ มันอาจทำให้แอป Applescript เสร็จสิ้น

โชคดี!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.