首頁>Apple>source

AppleScript允许您使用 do shell script執行shell命令 .將變數分配给此類命令的輸出很容易。

set theResult to do shell script "echo everything"
>> theResult = "everything"

在macOS上,您還可以使用 osascript在Terminal中執行Javascript代碼 :

osascript -l JavaScript << EOF
console.log('everything');
EOF
>> everything

但是,如果您从AppleScript執行此代碼,則一無所获:

set theResult to do shell script "osascript -l JavaScript << EOF
console.log('everything');
EOF"
>> theResult = ""

我還尝試將外壳變數分配给osascript輸出,並使用echoprint它.同樣,可以在终端機上工作:

theString=$(osascript -l JavaScript << EOF
console.log('everything');
EOF
)
echo $theString"
>> everything

但是通過 do shell script執行時它仍然不起作用 :

set theResult to do shell script "theString=$(osascript -l JavaScript << EOF
console.log('everything');
EOF
)
echo $theString"
>> theResult = ""

為什麼会這樣? 如何運作?

我会感谢您的帮助。

我的目標是能够在AppleScript指令碼中使用Javascript进行一些文字處理。

我對將Javascript代碼放入外部.js檔案不感兴趣,我希望將其保留在原位。

最新回復
  • 5月前
    1 #

    console.logosascript內 輸出到stderr(標準錯誤),而不是stdout(標準輸出).使用 2>&1將stderr重定向到stdout以將輸出捕获到變數

    set theResult to do shell script "osascript -l JavaScript2>&1<< EOF
    console.log('everything');
    EOF"
    

  • keyboard:如何使文字键繫結" yankAndSelect"起作用?
  • 如何在數字中按數字對列进行排序?