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.log
在osascript
內 輸出到stderr(標準錯誤),而不是stdout(標準輸出).使用2>&1
將stderr重定向到stdout以將輸出捕获到變數