2009-09-09 10 views
9

पर एक ऑटोमेटर कार्रवाई के रूप में मैं एक PHP शेल स्क्रिप्ट निष्पादित कैसे करूं मैं मैक ओएस एक्स हिम तेंदुए में प्रासंगिक सेवाओं को बनाने के लिए Automator.app की क्षमता से प्रेरित हूं। मैं शैल स्क्रिप्ट को कॉल करके टेक्स्ट स्निपेट में हेरफेर करने के लिए कुछ कीबोर्ड एक्सेस करने योग्य शॉर्टकट बनाना चाहता हूं। हालांकि, ऑटोमेटर केवल अनुमति देने के लिए बैश, पर्ल, पायथन और रूबी (दूसरों के बीच) का सुझाव देता है। लेकिन, चूंकि PHP मैक ओएस के साथ भी जहाज करता है (और, ईमानदार होने के लिए, यह एकमात्र स्क्रिप्टिंग भाषा है जिसे मैं पूरी तरह से मास्टर करता हूं), मुझे आश्चर्य है कि मैं PHP शैल स्क्रिप्ट क्यों नहीं चला सकता।मैक ओएस एक्स

उत्तर

6

यह सिर्फ एक हैक है, लेकिन एक पाइथन, या रूबी या पर्ल या बैश स्क्रिप्ट बनाने के बारे में कैसे है जो php स्क्रिप्ट-लाइन दुभाषिया को php स्क्रिप्ट के साथ कॉल करता है जिसे आप निष्पादित करना चाहते हैं?

बैश में उदाहरण के लिए इस रूप में सरल होगा:

#!/bin/bash 
php myscript.php 

अब, यह बचाने के निष्पादन के लिए यह अनुमति देते हैं:

chmod +x my_bash_script.sh 

और देखा। ऑटोमेटर अब बैश स्क्रिप्ट चला सकता है, जो php स्क्रिप्ट को कॉल करता है।

1

ऑटोमेटर के पास "रन शैल स्क्रिप्ट" क्रिया है, इसे अपने वर्कफ़्लो में जोड़ें और नीचे बाईं ओर दिए गए निर्देशों का पालन करें।

4

आप एक PHP स्क्रिप्ट चलाने के लिए "रन शैल स्क्रिप्ट" कार्रवाई का उपयोग कर सकते हैं।

Using "execute shell script" action for PHP code

(मैं दृढ़ता से सीखने की सलाह देते हैं अजगर, रूबी या पर्ल .. पीएचपी करता है वेब प्रोग्रामिंग के लिए कुछ फायदे हैं: एक आत्म निहित रास्ता <<EOF ... EOF उपयोग करने के लिए php आदेश को पारित करने के लिए स्क्रिप्ट है , लेकिन सिर्फ कमांड-लाइन स्क्रिप्टिंग के लिए नहीं है .. यह निश्चित रूप से संभव है, यह सिर्फ नहीं लगभग के रूप में हो जाएगा .. सुखद)

3

गोले की सूची स्वचालक का समर्थन करता है

/System/Library/Automator/Run\ Shell\ Script.action/Contents/Resources/Shells.plist 
में है

आप/usr/bin/php के लिए प्रविष्टि जोड़ने के लिए this guy's instructions का पालन कर सकते हैं। आप पहले .action फ़ाइल को ~/लाइब्रेरी/ऑटोमेटर पर प्रतिलिपि बनाना चाहते हैं, और प्रतिलिपि पर प्रतिलिपि बना सकते हैं।

बेशक, इसे बस एक बैश स्क्रिप्ट में लपेटना आसान है, जैसा कि अन्य ने सुझाव दिया है।

6

ऊपर डीबीआर का समाधान उत्कृष्ट है, लेकिन मुझे पता चला कि यह मेरे लिए काम नहीं करता है, संभवत: शैल, PHP, या ओएस संस्करण में बाद में परिवर्तन के कारण (मैं ओएस एक्स 10.8 का उपयोग कर रहा हूं)। बहुत सारे सिर-खरोंच के बाद मुझे पता चला कि उत्तर हेड्रोक मार्कर को उद्धृत करना है।

एक उपयोगी जोड़ php स्क्रिप्ट के माध्यम से तर्क पारित करने के लिए उचित वाक्यविन्यास का उपयोग करना है। यह सब एक साथ रखें, मैं उपयोग कर रहा हूँ:

php -- "[email protected]" <<'EOF' 
<?php 
print_r($argv); 
?> 
EOF 
+0

अजगर के लिए यह काम करने के लिए, अपने env के डिफ़ॉल्ट दुभाषिया का उपयोग कर, एक एकल हाइफन के लिए ऊपर बदलने के लिए: अजगर - "$ @" << 'EOF' – xref