সিটির চেয়ে উচ্চ-স্তরের কোনও ক্ষেত্রে একটি পয়েন্টার ( মেমরির অবস্থানের জন্য ) আসলেই কার্যকর ধারণা নয়, এটি পাইথন বা শেলের মতো কিছু হোক। বস্তুর উল্লেখগুলি অবশ্যই উচ্চ-স্তরের ভাষাগুলিতে কার্যকর, সম্ভবত জটিল ডেটা স্ট্রাকচার তৈরির জন্যও প্রয়োজনীয় necessary তবে বেশিরভাগ ক্ষেত্রে মেমরির ঠিকানাগুলির ক্ষেত্রে চিন্তাভাবনা খুব নিম্ন স্তরের খুব কার্যকর।
বাশ (এবং অন্যান্য শেলস) এ, আপনি স্বরলিখনের সাথে অ্যারে উপাদানগুলির মানগুলি পেতে পারেন ${array[index]}, তাদের সাথে নিয়োগ করতে array[index]=...এবং অ্যারের সাথে উপাদানগুলির সংখ্যা পেতে পারেন ${#array[@]}। বন্ধনীগুলির ভিতরে প্রকাশটি একটি গাণিতিক প্রকাশ expression একটি অন্তর্নির্মিত উদাহরণ হিসাবে, আমরা সমস্ত অ্যারে সদস্যদের একটি ধ্রুবক উপসর্গ যোগ করতে পারে:
for ((i=0 ; i < ${#array[@]} ; i++ )) ; do
array[i]="foo-${array[i]}"
done
(আমরা যদি কেবল মূল্যবোধের যত্ন নিই, এবং সূচিগুলি নাও ঠিক রাখি for x in "${array[@]}" ; do...))
সঙ্গে মিশুক বা বিক্ষিপ্ত অ্যারে , একটি সংখ্যাসূচক লুপ অনেক অর্থে দেখা যায় না, কিন্তু এর পরিবর্তে আমরা অ্যারে কী / ইনডেক্স আনা প্রয়োজন চাই ${!array[@]}। যেমন
declare -A assoc=([foo]="123" [bar]="456")
for i in "${!assoc[@]}" ; do
echo "${assoc[$i]}"
done
এগুলি ছাড়াও, বাশের অপরূপভাবে অন্য ভেরিয়েবলের দিকে নির্দেশ করার দুটি উপায় রয়েছে:
- পরোক্ষ সম্প্রসারণ ব্যবহার করে, বাক্য গঠন , যা পরিবর্তনশীল যার মান ব্যবহার নাম রয়েছে , এবং
${!var}var
- namerefs , সঙ্গে তৈরি করা প্রয়োজন যা
declarebuiltin (অথবা ksh-compatible প্রতিশব্দ, typeset)। পরিবর্তনশীল একটি রেফারেন্স declare -n ref=varতোলে ।refvar
নেমরেফগুলি সূচকগুলিও সমর্থন করে, এতে যদি আমাদের থাকে arr=(a b c); declare -n ref=arr;তবে ${ref[1]}প্রসারিত হবে b। ব্যবহার ${!p[1]}পরিবর্তে লাগবে pএকটি অ্যারের, এবং তার দ্বিতীয় উপাদান নামে পরিবর্তনশীল পড়ুন।
বাশ-এ, নামরেফগুলি আক্ষরিক অর্থে যে নাম অনুসারে রেফারেন্স এবং কোনও ফাংশনের ভিতরে থেকে নেমরেফ ব্যবহার করলে নামযুক্ত ভেরিয়েবলের স্থানীয় মান ব্যবহৃত হবে। এটি মুদ্রণ করবে local value of var।
#!/bin/bash
fun() {
local var="local value of var"
echo "$ref";
}
var="global var"
declare -n ref=var
fun
বাশফ্যাকএরও ইন্ডিয়ারেশন নিয়ে দীর্ঘতর নিবন্ধ রয়েছে ।