ส่งผ่านอาร์กิวเมนต์ไปยัง osascript ผ่านฟังก์ชันเชลล์ใน OS X Mountain Lion


1

คำตอบค่ะ วิธีเปิดหน้าต่าง Firefox ใหม่พร้อมด้วยอาร์กิวเมนต์ URL เสียใน Mac OSX Mountain Lion (10.8.2) ฉันไม่สามารถแสดงความคิดเห็นกับคำตอบหรือคำถามนั้นได้ดังนั้นฉันต้องสร้างคำถามใหม่

มันล้มเหลวเช่นนี้:

$ firefox-window http://www.yahoo.com
dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/osascript) is code signed with entitlements

หน้าต่างใหม่เปิดขึ้นเรียบร้อยแล้ว แต่ว่างเปล่า (เช่นตัวแปรสภาพแวดล้อมที่ส่งผ่านไปยัง AppleScript ในฟังก์ชัน bash จะถูกละเว้น)

มีวิธีอื่นในการส่งผ่านตัวแปรไปยัง applescript จาก commandline หรือไม่ (อาจไม่ใช้ทุบตี?)

อ้างอิง

"แอปแซนด์บ็อกซ์ไม่สามารถใช้ AppleScript เพื่อสื่อสารกับแอปอื่นใน Mac ของคุณเว้นแต่ผู้พัฒนาจะร้องขอ (และรับ) สิทธิ์ในการทำเช่นนั้นโดยเฉพาะ"

ดังนั้นฉันเดาว่าข้อ จำกัด นี้จะป้องกันไม่ให้มีการใช้เทคนิคดังกล่าวข้างต้นเช่นสคริปต์ทุบตีไม่สามารถตัดแอปพลิเคชันที่พูดถึง Firefox

วิธีแก้ปัญหา # 1

เรียกมันโดยตรงแทนที่จะใช้ตัวแปรเชลล์ ($ 1) ตัวอย่างเช่นงานนี้:

$ osascript ~/bin/firefox-window.scpt "http://www.yahoo.com"

Firefox เปิดหน้าต่างใหม่ที่ชี้ไปที่ yahoo


น่าสนใจ นี่คือ "คุณลักษณะด้านความปลอดภัย" ที่เกี่ยวข้องกับ Gatekeeper ใน 10.8 และได้รับการรายงานแล้ว ฉันไม่แน่ใจว่ามีการแก้ไข ฉันได้สร้างข้อความใหม่และทำให้เป็นคำถามทั่วไปของคุณเล็กน้อยมิฉะนั้นจะเป็นคำถามที่ซ้ำกับคำถามที่คุณเชื่อมโยง ฉันหวังว่าบางคนจะมีวิธีแก้ปัญหาสำหรับสิ่งนี้จากนั้นฉันสามารถอัปเดตคำตอบสำหรับคำถามแรกได้เช่นกัน
slhck

ขอบคุณ! ฉันเห็นคำถามสองสามข้อเกี่ยวกับคุณลักษณะความปลอดภัยและฉันเข้าใจสิ่งที่พวกเขากำลังพยายามป้องกันด้วยการบังคับใช้วิธีนี้ แต่วิธีแก้ปัญหาจนถึงตอนนี้แสดง applescripts ที่ไม่มีอินพุตตัวแปรใด ๆ ฉันเดาที่สองคือการเขียนฟังก์ชั่นใหม่ใน applescript บริสุทธิ์และส่งผ่าน vars จากบรรทัดคำสั่งแทนที่จะใช้ env vars แต่ฉันยังคงทำงาน
Larry Kyrala

คำตอบ:


0
osascript -e 'tell application "Firefox"' -e 'open location "http://example.com/"' -e 'end tell'

ที่ควรทำในแท็บใหม่ไม่ใช่หน้าต่างใหม่หากไม่เป็นไร

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