যুক্তি দিয়ে স্ক্রিপ্ট লিখছেন?


11

আমি শেল স্ক্রিপ্ট লিখতে চাই যা একটি আর্গুমেন্ট গ্রহণ করে এবং তারপরে এটি ফাইলগুলিতে প্রয়োগ করে।

বিশেষত, আমি একটি পদ দিতে চাই এবং তারপরে এটি এমএক্সএমএলসি ("এমএক্সএমএলসি টার্ম.এএস") দিয়ে টার্মটি সংকলন করতে চাই, তারপরে ফ্ল্যাশপ্লেডেবার্গার ("ফ্ল্যাশপ্লেডেবার্গার টার্ম। এসডাব্লুফ") দিয়ে টার্ম.এসডাব্লু চালান। আমি স্ক্রিপ্টিং শেল মোটামুটি নতুন - কোন চিন্তা?


$2হ'ল প্রথম যুক্তি, $3দ্বিতীয়টি এবং আরও অনেক কিছু। $1ফাইলের নামের জন্য সংরক্ষিত অন্যান্য জিনিস হিসাবে, আমি আপনি কি বলতে চান তা পুরোপুরি বুঝতে পারছি না। আপনি কি দয়া করে এটি আরও ভালভাবে ব্যাখ্যা করার চেষ্টা করতে পারেন বা কিছু psuedocode লিখতে পারেন?
চৌদ্দ

1
@ ইনক্লাব্ল্যান্ড আপনি একে একে বন্ধ হয়ে গেছেন। "$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। (উদ্ধৃতিগুলির ভিতরে উদ্ধৃতিগুলি হতে পারে))
এলিয়াহ কাগন

কিন্তু যদি পরামের ফাঁকা জায়গা থাকে?
দাউদ

আপনি বেশ ঠিক বলেছেন। এই ত্রুটিটি ঠিক করতে আমি আমার মন্তব্য সম্পাদনা করেছি।
এলিয়াহ কাগন

@shinnra প্যারামিটার স্পেস রয়েছে, তাহলে 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 "ভিতরে থাকতেন" তবে নিউনামটি "মাইফাইআইসিনসাইড এর পাশে এবং এটিই সব"।

কমান্ড লাইনটি 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"

আনন্দ কর!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.