[英]Run a Terminal command on open location AppleScript
當調用自定義 url 時,我想在終端中運行命令。
例子:
當有人在瀏覽器中打開 myapp://hello 或有人執行 open "myapp://hello" 時,我想打開一個終端並運行 echo "hello myapp://hello"
我是蘋果腳本的新手,所以我進行了很多搜索,但無法得出一個有效的代碼片段。
我試過了:
on open location this_URL
display alert this_URL
tell application "Terminal"
reopen
do script "echo 'hello " & this_URL & "'"
activate
end tell
end open location
將 Info.plist 更新為:
.....
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>myapp</string>
<key>CFBundleURLSchemes</key>
<array>
<string>myapp</string>
</array>
</dict>
</array>
....
此代碼只是打開一個終端,但不運行 echo 命令。 代碼的獨立部分:
on open location this_URL
display alert this_URL
end open location
和
tell application "Terminal"
reopen
do script "echo 'hello " & this_URL & "'"
activate
end tell
完美運行。
但是組合不起作用....
請告訴我一些解決方法。
提前致謝
我認為這是授權的問題。
我不知道為什么,但是當我們在 plist 中添加 CFBundleURLTypes 時,macOS 會阻止我們向終端發送事件。
所以這里有一個解決方法:
制作 2 個應用程序而不是一個,如下所示
所以這將處理傳入的 url 將其復制到剪貼板並啟動第二個應用程序。 其applescript將如下:
on open location this_URL
set the clipboard to this_URL
tell application "/path/to/app2.app" to activate
end open location
將 CFBundleURLTypes 添加到它的 plist
它將從剪貼板讀取 url,然后在終端上運行它。 其applescript將如下:
tell application "Terminal"
set this_URL to ( the clipboard as text )
do script "echo 'hello " & this_URL & "'"
activate
end tell
set the clipboard to ""
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.