ก่อนอื่นเลยโค้ด บรรทัดแรกของคุณ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\"') " &