ผลลัพธ์แอปพลิเคชันของ tell เป็น argouments


-1
tell application "Safari" to set the content of var1 to URL of active tab of front window
do shell script "grep " & var1 & "path-to-my-file/file"

หาก URL ของแท็บที่ใช้งานอยู่บน Safari คือ https://apple.stackexchange.com/ applescript จำลองคำสั่งต่อไปนี้:

grep https://apple.stackexchange.com/ ...... / ไฟล์

ฉันต้องการทำเช่นนั้นโดยไม่เก็บผลลัพธ์ของ "แอปพลิเคชันซาฟารี" ไว้ในตัวแปร ฉันลองสิ่งนี้ แต่ใช้ไม่ได้

do shell script "grep " & tell application "Safari" to return URL of ....... & "...../file" 

คำตอบ:


1

ก่อนอื่นเลยโค้ด บรรทัดแรกของคุณtell application "Safari" to set the content of var1 to URL of active tab of front windowไม่ได้คอมไพล์ด้วยซ้ำ! มันผิดพลาดด้วย " ข้อผิดพลาดทางไวยากรณ์ชื่อคลาสไม่สามารถไปหลังจากตัวระบุนี้" active tabชี้ไปที่ ดังนั้นdo shell script "grep " & var1 & "path-to-my-file/file"อาจไม่สามารถทำงานตามที่เขียนไว้แล้ว!

วิธีที่เหมาะสมในการรับคือURL:

tell application "Safari" to get the URL of current tab of window 1 of application "Safari"

หรือเพื่อตั้งเป็นตัวแปรใช้:

tell application "Safari" to set theURL to (get the URL of current tab of window 1 of application "Safari")

ดังนั้นโค้ดสองบรรทัดแรกในคำถามของคุณจะใช้ได้หากใช้เช่น:

try
    tell application "Safari" to set theURL to (get the URL of current tab of window 1 of application "Safari")
    do shell script "grep " & quoted form of theURL & " /path/to/target/file"
end try
  • โปรดทราบว่ามีช่องว่างหลังเครื่องหมายคำพูดคู่ก่อนหน้า/path/to/target/fileนี้และจำเป็นต้องใช้พื้นที่นี้

  • นอกจากนี้ยังมีรหัสเป็นห่อในtry คำสั่งเพื่อดักจับข้อผิดพลาดใด ๆ ถึงแม้ว่าคุณจะต้องเพิ่มเพิ่มเติมรหัสในการประมวลผลข้อผิดพลาด (s)ตามการใช้จัดการon error ในขณะที่try คำสั่งจะซ่อนข้อผิดพลาดให้ใช้ร่วมกับon error ตัวจัดการจะมีความจำเป็นหากgrepไม่พบการแข่งขันและคุณต้องการที่จะดำเนินการเพิ่มเติมตามผลลัพธ์จากgrep คำสั่งที่ไม่พบการแข่งขัน

ถ้าคุณอยากจะทำมันได้โดยไม่ต้องตั้งค่าURLให้กับตัวแปรแล้วใช้วิธีการนี้:

try
    do shell script "grep $(osascript -e 'tell application \"Safari\" to get the URL of current tab of window 1 of application \"Safari\"')" & " /path/to/target/file"
end try

โปรดทราบว่าในกรณีนี้พื้นที่ที่จำเป็นสามารถแสดงได้หลังเครื่องหมายอัญประกาศคู่ก่อนชื่อพา ธหรือสามารถวางไว้หลังวงเล็บปิดของ$(...)และก่อนปิดเครื่องหมายอัญประกาศคู่ก่อนเครื่องหมายแอมเปอร์แซนด์เช่น:...\"Safari\"') " &

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