শেল স্ক্রিপ্টগুলিতে ভেরিয়েবল অ্যাসাইনমেন্টে ফাঁকা স্থান


17

নীচের ভেরিয়েবল অ্যাসাইনমেন্টের মধ্যে পার্থক্য কী?

var=23
var =23
var= 23
var = 23

অ্যাসাইনমেন্ট অপারেটরের চারপাশে স্থানের কোনও পার্থক্য রয়েছে কি?


বেশিরভাগ প্রোগ্রামিং ভাষায় এটি কোনও পার্থক্য করতে পারে না ... আসলেই কি কোনও পার্থক্য শুরু করা উচিত? এছাড়াও আপনি এখানে ওল্ডস্কুলের কথা বলছেন? ছাই / জেডএস / বাশ বা অন্যান্য নতুন জিনিস নয়?
সিষ্টেরিয়ান

শুধুমাত্র প্রথম উদাহরণগুলি একটি পরিবর্তনশীল সেট করে।
ডিসপ্লেনেম

তাহলে শেষ 3 টি কেবল একটি সিনট্যাক্স ত্রুটি ফেলে না? বা তারা আসলে অর্থ রাখে?
সিষ্টেরিয়ান

2
@ সিস্ট্রিয়েন তাদের কিছু অর্থ বলতে পারে, যদি আপনার কাছে একটি কমান্ড থাকে varতবে var =23এটি ভেরি পাস হবে এবং পাস হবে =23এবং বিভিন্ন var = 23হবে । অথবা, যদি আপনার একটি কমান্ড কল হয় তবে কমান্ডটি প্রেরণ করা হবে । =23var=var= 2323var=
ডিসপ্লেনেম

1
@ সিস্তেরিয়ান দ্বারা প্রতিস্থাপিত bash, যা shচারটি ক্ষেত্রে ঠিক একই কাজ করে ।
pfnuesel

উত্তর:


14

এটি শেলের উপর নির্ভর করে। যদি আমরা কেবলমাত্র 4 টি প্রধান শেল পরিবার (বোর্ন, সিএসএস, আরসি, ফিশ) দেখি:

বোর্নে পরিবার

যে বোর্ন শেল এবং তার সকল রূপের এবং ksh, bash, ash/ dash, zsh, yash

  • var=23: এটি সঠিক পরিবর্তনশীল অ্যাসাইনমেন্ট সিনট্যাক্স: একটি শব্দ যা অবর্ণিত অক্ষর, অঙ্ক বা আন্ডারস্কোর সমন্বিত একটি অনুমানযুক্ত =পরে একটি কমান্ড আর্গুমেন্টের সামনে উপস্থিত হয় (এটি এখানে এটি নিজস্ব)
  • var =23, আর্গুমেন্ট হিসাবে varকমান্ডটি =23( zshযেখানে =somethingকোনও বিশেষ অপারেটর যেখানে somethingকমান্ডের পথে প্রসারিত হয় তা বাদে Here এখানে, আপনি কোনও 23বৈধ কমান্ডের নাম হওয়ার সম্ভাবনা না থাকায় একটি ত্রুটি পেতে পারেন)।
  • var= 23: একটি আদেশ var=পরে একটি আদেশ নাম 23। যে চালানো বোঝানো হচ্ছে 23সঙ্গে var=(তার পরিবেশ প্রেরণ varএকটি খালি মান এনভায়রনমেন্ট ভেরিয়েবল)।
  • var = 23, যুক্তি হিসাবে এবং হিসাবে varকমান্ড । উদাহরণস্বরূপ চেষ্টা করুন ।=23echo = 23

পরিবার পরিবার

cshএবং tcsh। পরিবর্তনীয় অ্যাসাইনমেন্টগুলি set var = valueস্কেলার ভেরিয়েবলের জন্য সিনট্যাক্সের সাথে রয়েছে , set var = (a b)অ্যারেগুলির setenv var valueজন্য, পরিবেশের ভেরিয়েবলগুলির @ var=1+1জন্য, অ্যাসাইনমেন্ট এবং পাটিগণিত মূল্যায়নের জন্য।

তাই:

  • var=23কেবল var=23কমান্ডটি চাচ্ছেন ।
  • var =23যুক্তি হিসাবে varকমান্ড প্রার্থনা করা হয় =23
  • var= 23যুক্তি হিসাবে var=কমান্ড প্রার্থনা করা হয়23
  • var = 23invoking হয় varকমান্ড =এবং 23আর্গুমেন্ট হিসাবে।

আরসি পরিবার

এটি rc, esএবং akanga। সেই শেল সালে ভেরিয়েবল অ্যারে এবং বরাদ্দকরণ সঙ্গে আছে var = (foo bar), সঙ্গে var = fooস্বল্প হচ্ছে var = (foo)(এক সঙ্গে একটি অ্যারে fooউপাদান) এবং var =স্বল্প var = ()(কোন উপাদান সঙ্গে অ্যারে, ব্যবহার var = ''এক খালি উপাদান সহ একটি বিন্যাস জন্য)।

যে কোনও ক্ষেত্রে, আশেপাশে ফাঁকা স্থান (স্থান বা ট্যাব) =অনুমোদিত এবং optionচ্ছিক। সুতরাং সেই শেলগুলিতে এই 4 টি কমান্ডের var = (23)সাথে একটি উপাদান থাকা একটি অ্যারে নির্ধারণের সমতুল্য এবং সমতুল্য 23

মাছ

ইন fish, ভেরিয়েবল অ্যাসাইনমেন্ট সিনট্যাক্স হয় set var value1 value2। এর মতো rc, ভেরিয়েবলগুলি অ্যারে হয়।

সুতরাং আচরণটি একইরকম হবে csh, এ ছাড়া এটি fishআপনাকে =তার নামে একটি কমান্ড চালাতে দেয় না । আপনি এই ধরনের কমান্ড থাকে, তাহলে আপনি মাধ্যমে এটি ডাকা প্রয়োজন shউদাহরণস্বরূপ: sh -c 'exec weird===cmd'

সমস্ত তাই var=23এবং var= 23আপনি যদি কোনো ত্রুটি দেবে var =23ডাকব varসঙ্গে কমান্ড =23আর্গুমেন্ট হিসাবে এবং var = 23ডাকব varসঙ্গে কমান্ড =এবং 23আর্গুমেন্ট হিসাবে।


8

var=23ভেরিয়েবলের জন্য 23 বরাদ্দ করে var

var =23কমান্ড চালানোর চেষ্টা করে (বা উপন্যাস, বা ফাংশন) varযুক্তি দিয়ে=23

var = 23কিন্তু, তর্ক =এবং23

var= 23varএনভায়রনমেন্ট ভেরিয়েবলকে ফাঁকা স্ট্রিংয়ে সেট করে , তারপরে কমান্ড চালায়23

হ্যাঁ, শেল একটি প্রোগ্রামিং ভাষা হিসাবে অদ্ভুত। তবে এটি ইন্টারেক্টিভ ব্যবহারের জন্য খোল হিসাবে নিখুঁত ধারণা তৈরি করে , যেখানে পৃথক কমান্ড এবং তর্কগুলি পৃথক করে। বেশিরভাগ "বিশেষ অক্ষর" ( =এক্ষেত্রে) কেবলমাত্র নির্দিষ্ট পজিশনেই বিশেষ অর্থ রাখে, কমান্ডগুলিতে প্রায় স্বেচ্ছাচারী যুক্তিগুলির অনুমতি দেয় the উপরের ব্যাখ্যাগুলি দেখুন।


3
  • var=23 একটি ভেরিয়েবলের মান নির্ধারণের জন্য সঠিক বাক্য গঠন।
  • var =23কমান্ডের varসাথে =23বিকল্প / যুক্তির সাথে কমান্ড হিসাবে বিবেচিত হয় var(যদিও আর্গুমেন্ট / বিকল্পের জন্য সঠিক / মানক সিনট্যাক্সটি হয় -optionবা --option)
  • var= 23varঅ্যাসাইনমেন্টের প্রক্রিয়াটিকে হোয়াইট স্পেস ভাঙার কারণে কোনও কিছুই বরাদ্দ করা হবে না এবং এটি 23অন্য আদেশ হিসাবে বিবেচিত হবে। কার্যসংক্রান্ত নেই var=\ 23বা var=' 23'সাদা-স্পেস ঠিক রাখার জন্য।
  • var = 232 তম ক্ষেত্রে যেমন আলোচনা হয়েছে তেমন প্রভাব রয়েছে ।

    প্রকৃতপক্ষে এই ধরণের জায়গার ব্যবহার =সাধারণত অভ্যন্তরের পরীক্ষার ক্ষেত্রে ব্যবহৃত হয় [[ ]]। বাশের উদাহরণ:

    string1 = string2
           True if the strings are equal.  = should be used with the test command  for  POSIX  conformance.  
           When used with the [[ command, this performs pattern matching as described above (Compound Commands).

চারপাশের সাদা-স্পেসের সমস্ত আচরণ =আপনার শেল এবং প্রোগ্রামিং ভাষার উপর নির্ভর করে।

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