我的iMac(Yosemite)上有一些脚本,它们从终端调用时可以正常工作,但在我的Raspberry pi3上从Python 2.7程序调用时会有不同的结果。
这是一个例子: iMac上的脚本 - 此脚本暂停iTunes;说一句话;然后重新启动iTunes。
saysomething.sh
#!/bin/bash
echo -e "Content-type: text/html\n"
PHRASE=`echo "$QUERY_STRING" | sed -n 's/^.*phrase=\([^&]*\).*$/\1/p' | sed "s/+/ /g" | sed "s/%20/ /g"`
cat << junk
<html>
<head>
<title>
saying
</title>
</head>
<body>
junk
#-----------------------
osascript -e 'tell application "iTunes" to playpause'
osascript -e 'tell application "iTunes" to delay 1'
say "Testing"
#say $PHRASE (line is commented because when run from terminal the param is not passed)
osascript -e 'tell application "iTunes" to delay 2'
osascript -e 'tell application "iTunes" to playpause'
#-----------------------
cat << junk
</body>
</html>
junk
当我从iMac上的终端会话中运行它时,它按预期工作,音乐播放停止,单词“Testing”为“say”,然后音乐重新开始。
RPI上的Python脚本 - 这个脚本在iMac上执行脚本,我原本认为,它的工作方式与终端相同......但它没有!
MakeThe_iMac_Say.py
# works with Python 2.7.3
# this script is to have the iMac 'say' the text
#***********************************************
#bring in the required libraries
import urllib2
import os
import string
#***********************************************************
text1 = "hello this is a test"
address = "http://10.0.1.11"
url = address+"/cgi-bin/saysomething.sh?phrase="+text1
response = urllib2.urlopen(url).read()
当我执行此脚本时,从RPI开始,音乐不会暂停,但“测试”一词是“说”(在音乐上!)。所以我知道iMac上的脚本实际上正在运行,但某些命令被忽略了!请注意,iMac脚本当前会忽略'text1'参数。
在从RPI调用时,如何让iMac上的脚本执行applescript操作?
修改 Apache服务器错误日志具有以下错误:
AH01215:执行错误:发生了-10810类型的错误。 (-10810):/ Library / WebServer / CGI-Executables /saysomethinghttp9.sh
我找不到任何可以解释此错误的内容!