শর্তাধীন কাঠামোয় সেমিকোলন


35

কেন একটিতে সেমিকোলন রাখে অন্যটিতে নয়?

ফলাফল একই

কোড এক

if [ "a" == "a" ]
then
 echo "true"
fi

কোড দুটি

if [ "a" == "a" ];
then
 echo "true";
fi

দ্বিতীয় কোডে সেমিকোলনগুলি অপ্রয়োজনীয়?

এটি যখন সেমিকোলন স্থাপন করা প্রয়োজন?


2
এটির যথেষ্ট এবং সঠিকভাবে জবাব দেওয়া হয়েছে, তবে আমি ওপিকেও তা জানাতে চেয়েছিলাম; কেবল যে কোনও প্রান্তের রেখাকে প্রতিস্থাপন করে , যাতে আপনি দুটি কমান্ডকে এক লাইনে একত্র করতে পারেন, যেমন:svn up; make
হারুন ডি মারাকো

1
আরও লক্ষ করুন যে দুটি স্টেট-কলোন ;;ক্ষেত্রে বিবৃতিতে ম্যাচগুলি পৃথক করতে ব্যবহৃত হয়। ;;এখানে প্রয়োজনীয়, notচ্ছিক নয় .... তবে এর ;;মতো ;বা একই জিনিস নয় ; ;, এটি দেখতে এটি দেখতে কিছুটা অদৃশ্য। একক আধা- ;কলোনগুলি কেস স্টেটমেন্টের কম্যান্ডস অংশগুলিতে স্বাভাবিক হিসাবে কাজ করে।
কেস

উত্তর:


31

সেমিকোলন তখনই প্রয়োজন যখন লাইনের শেষটি অনুপস্থিত:

if [ "a" == "a" ] ; then echo "true" ; fi

সেমিকোলন ব্যতীত আপনি সিনট্যাক্স ত্রুটি পাবেন।

উক্তি সম্পর্কে আপনার প্রশ্ন আমি বুঝতে পারি না। আপনি আরো নির্দিষ্ট হতে পারে?

( এবং যাইহোক , এর =পরিবর্তে ব্যবহার ==করা আরও পোর্টেবল এবং পসিক্স অনুগত)।


দ্বিতীয় কোডে উদ্ধৃতিগুলি অপ্রয়োজনীয়?
ঝোনাথন

2
উভয় নমুনার সমস্ত উদ্ধৃতি অপ্রয়োজনীয়।
চোরোবা

6

সেমিকোলনটি প্রায়শই ব্যবহৃত হয়, কারণ কিছু লোক (/ আমার উদাহরণ) এর মতো স্টাইল পছন্দ করে:

if [ ... ]; then
   doit-it-then
else
   doit-it-else
fi

সুতরাং, যদি তখন-কীওয়ার্ডটি কন্ডিশন-লাইনে স্থাপন করা হয় তবে এটি প্রয়োজনীয় কারণ কারণ চোরোবা দ্বারা লিখিত একটি নতুন কমান্ড শুরু হয়।

কন্ডিশন-চেক-এ কোটগুলি সম্পর্কিত তারা প্রায়শই ভেরিয়েবলের সাথে ব্যবহার করা হয় তা নিশ্চিত করার জন্য যে কোনও কিছু ভেরিয়েবলকে বরাদ্দ না দেওয়া হয় তার ব্যতিক্রম ঘটে না তা নিশ্চিত করে। এটি একটি নিরাপদ শৈলী এবং অযৌক্তিক লাগছে তবে শেল-প্রোগ্রামিংয়ে এটি সময়ে সময়ে প্রোগ্রামগুলি তৈরি করেছে যদিও সামগ্রীগুলি ভেরিয়েবলগুলিতে বরাদ্দ করা যায়নি। কমান্ডটি এখনও কাজ করছে কারণ একটি খালি স্ট্রিংয়ের তুলনা করা হচ্ছে।

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