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


11

আমি ব্যাশে একক প্রথম বন্ধনী সম্পর্কে ভাবছিলাম। আমি জানি যে এগুলি সাবহেলে কমান্ড কার্যকর করার জন্য ব্যবহৃত হয় এবং তারা অ্যারে তৈরি করতে ব্যবহৃত হয়, তবে তারা কি অন্য কিছুর জন্য ব্যবহৃত হয়?

আমার দৃষ্টি আকর্ষণকারী একটি জিনিস হ'ল আপনি যখন ভেরিয়েবল অ্যাসাইনমেন্টটি ব্যবহার করেন, তেমন

var=(hello)
echo $var    # hello

বাশ কোনও ত্রুটি বা কিছু উত্পন্ন করে না এবং আউটপুটটি একই রকম হয়

var=hello

এই দুটি ভেরিয়েবল সংজ্ঞা কি একই বা ভিন্নতা আছে?

উত্তর:


14

উদাহরণস্বরূপ, আপনার ক্ষেত্রে বন্ধনীগুলি ()অ্যারে সংজ্ঞা হিসাবে ব্যবহৃত হয়

a=(one two three)   # array definition
echo "${a}"         # print first element of array a
echo "${a[0]}"      # print first element of array a
echo "${a[1]}"      # print *second* element of array a
echo "${#a[@]}"     # print number of elements in array a

আপনি যদি অ্যারেতে একক ভেরিয়েবল রাখেন তবে আপনার কেবল একক উপাদান সহ একটি অ্যারে থাকবে।


আপনার অন্য প্রশ্নের জবাব দেওয়ার জন্য যে প্রথম কিছুর জন্য প্রথম বন্ধনী bashব্যবহার করা হয়: অন্যান্য চরিত্রের সাথে একযোগে অনেকগুলি পরিস্থিতি রয়েছে যা সে হিসাবে ব্যবহার করা যেতে পারে:

  • কমান্ড প্রতিস্থাপন: $()
  • প্রক্রিয়া প্রতিস্থাপন: <()এবং>()
  • subshell: (command)
  • পাটিগণিত মূল্যায়ন: (())
  • ফাংশন সংজ্ঞা: fun () { echo x; }
  • উল্লিখিত glob মধ্যে প্যাটার্ন তালিকা: ?(), *(), +(), @(), !()( শুধুমাত্র যদি extglobসক্ষম করুন )

1
ঠিক আছে, আমি আসলে এটি ভাবিনি। কিন্তু তাই var=(1 2 3); echo $varকি হিসাবে একই var=(1 2 3); echo ${var[0]}?
ম্যাটিয়াস

হ্যাঁ, ফলাফল bashএকই।
জিম্মিজ

আমরা প্রয়োজন না ""মধ্যে echo "${a}"?
nn0p

@ nn0p হ্যাঁ আমরা করি, যদি আমরা বিভক্তকরণ এবং গ্লোব অপারেশন চালাতে না চাই a। উদাহরণস্বরূপ বিবেচনা করুন a=*, তারপরে চেষ্টা করুন echo $aএবং echo "$a"
jimmij
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.