तर्कों के साथ स्क्रिप्ट लिखना?


11

मैं शेल स्क्रिप्ट लिखना चाहता हूं जो एक तर्क लेता है, और फिर इसे फाइलों पर लागू करता है।

विशेष रूप से, मैं एक शब्द देना चाहता हूं, और फिर इसे mxmlc ("mxmlc term.as") के साथ term.as संकलित करें, फिर flashplayerdebugger ("flashplayerbebugger term.swf") के साथ term.swf चलाएँ। मैं शेल स्क्रिप्टिंग के लिए काफी नया हूँ - कोई विचार?


$2पहला तर्क है, $3दूसरा, और इसी तरह। $1फ़ाइल के नाम के लिए आरक्षित है। अन्य सामान के रूप में, मैं काफी समझ में नहीं आता कि आप क्या मतलब है। क्या आप कृपया इसे थोड़ा बेहतर ढंग से समझाने की कोशिश कर सकते हैं या कुछ psuedocode लिख सकते हैं?
चार

1
@InkBlend आप एक एक करके रवाना हो रहे हैं। "$1"पहला तर्क है।
जिरह

@ उगिरहा: आउच। उससे ठेस पहुँचती है। आप सही कह रहे हैं, बिल्कुल। मूर्खतापूर्ण, मैं अजगर के बारे में सोच रहा होगा।
चार

जवाबों:


19

आप कुछ इस तरह का उपयोग कर सकते हैं:

#!/bin/sh
# $0 is the script name, $1 id the first ARG, $2 is second...
NAME="$1"
mxmlc $NAME.as
flashplayerdebugger $NAME.swf

1
या NAMEचर को पूरी तरह से छोड़ दें और बस उपयोग करें mxmlc "$1".asऔर flashplayerdebugger "$1".swf। (उद्धरण भाव के अंदर हो सकते हैं।)
एलियाह कगन

लेकिन क्या होगा अगर परम में रिक्त स्थान हैं?
दाविद

आप बिल्कुल सही हैं। मैंने इस त्रुटि को ठीक करने के लिए अपनी टिप्पणी संपादित की है।
एलिया कागन

@ शिन्रा यदि पैरामीटर में रिक्त स्थान हैं, तो nxmlcऔर flashplayerdebuggerइच्छित तर्क के बजाय कई तर्क मिलेंगे। NAMEजरूरतों का विस्तार दोतरफा होना चाहिए। एक साइड नोट पर, सभी अपरकेस वैरिएबल नामों का उपयोग न करें; आप विशेष शेल चर या पर्यावरण चर को अधिलेखित करने का जोखिम उठाते हैं।
जिरह

4

मैं आपको चर नाम परिसीमन का उपयोग करने की भी सलाह देता हूं। तो कोड इस तरह दिखेगा:

#!/bin/sh
# $0 is the script name, $1 id the first ARG, $2 is second...
NAME="$1"
mxmlc ${NAME}.as
flashplayerdebugger ${NAME}.sw

यह किसी भी संदर्भ में चर का उपयोग करने की अनुमति देता है, यहां तक ​​कि अन्य पाठ के अंदर भी। उदाहरण के लिए:

NewName="myFileIs${NAME}and that is all"

यह वैरिएबल NAME का विस्तार करेगा, जो "myFileIs" के सामने और पीछे "के साथ" flanked होगा और यह सब "वैरिएबल का विस्तार होगा, रिक्त स्थान शामिल हैं, स्ट्रिंग के अंदर। अगर NAME "यहाँ अंदर" था तो NewName "myFileIsinside hereand that all" होगा।

कमांड लाइन 9 चर तक ले जा सकती है। वे उद्धृत किए जा सकते हैं स्ट्रिंग जिनमें रिक्त होते हैं, प्रत्येक उद्धृत स्ट्रिंग एक चर के रूप में गिना जाता है। जैसे कि:

./myProg var1 var 2 var3

तो ${1}है "var1", ${2}है "var", ${3}है "2", ${4}है"var3"

परंतु: ./myProg var1 "var 2" var3

है ${1}है "var1", ${2}है "var 2", ${3}है"var3"

मज़े करो!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.