/bin/sh
আজকাল কোনও সিস্টেমে খুব কমই বোর্ন শেল (এমনকি সোলারিস এটি অন্তর্ভুক্ত করার জন্য সর্বশেষ প্রধান ব্যবস্থার মধ্যে একটি যা এখন সোলারিস ১১ এ তার / বিন / শের জন্য একটি পসিক্স এস-এ চলে গেছে)) /bin/sh
70 এর দশকের গোড়ার দিকে থম্পসন শেল ছিল। বোর্ন শেল 1979 সালে ইউনিক্স ভি 7 এ এটি প্রতিস্থাপন করে।
/bin/sh
এরপরে বহু বছর ধরে বোর্ন শেল ছিল (বা অ্যালকুইস্ট শেল, বিএসডিগুলিতে একটি ফ্রি রিম্পিমিলেশন)।
আজকাল, পসিক্স ভাষার জন্য /bin/sh
সাধারণত একটি অনুবাদক বা অন্য কোনও sh
ভাষা যা নিজেই ksh88 ভাষার একটি উপসেট (এবং কিছু অসম্পূর্ণতা সহ বোর্ন শেল ভাষার একটি সুপারসেট) এর উপর ভিত্তি করে।
বোর্ন শেল বা পসিক্স ভাষা স্পেসিফিকেশন অ্যারে সমর্থন করে না। (অবস্থানগত পরামিতি: অথবা বরং তারা শুধুমাত্র এক অ্যারে আছে $1
, $2
, $@
যেমন, তাই ফাংশন প্রতি এক অ্যারে ভাল)।
ksh88 এর সাথে অ্যারে রয়েছে যা আপনি সেট করেছেন set -A
, তবে সিনট্যাক্সটি বিশিষ্ট এবং খুব ব্যবহারযোগ্য নয় বলে POSIX sh এ নির্দিষ্ট করা হয়নি।
অ্যারে / করণীয় তালিকা ভেরিয়েবল সঙ্গে অন্য শেল মধ্যে রয়েছে: csh
/ tcsh
, rc
, es
, bash
(বেশিরভাগই ksh93 পথ অনুলিপি যা ksh সিনট্যাক্স), yash
, zsh
, fish
একটি ভিন্ন সিনট্যাক্স (সঙ্গে প্রতিটি rc
ইউনিক্স এর উত্তরাধিকারী একবার টু-হতে এর শেল, fish
এবং zsh
সবচেয়ে সামঞ্জস্যপূর্ণ হচ্ছে বেশী) ...
স্ট্যান্ডার্ডে sh
(বোর্ন শেলের আধুনিক সংস্করণগুলিতেও কাজ করে):
set '1st element' 2 3 # setting the array
set -- "$@" more # adding elements to the end of the array
shift 2 # removing elements (here 2) from the beginning of the array
printf '<%s>\n' "$@" # passing all the elements of the $@ array
# as arguments to a command
for i do # looping over the elements of the $@ array ($1, $2...)
printf 'Looping over "%s"\n' "$i"
done
printf '%s\n' "$1" # accessing individual element of the array.
# up to the 9th only with the Bourne shell though
# (only the Bourne shell), and note that you need
# the braces (as in "${10}") past the 9th in other
# shells.
printf '%s\n' "$# elements in the array"
printf '%s\n' "$*" # join the elements of the array with the
# first character (byte in some implementations)
# of $IFS (not in the Bourne shell where it's on
# space instead regardless of the value of $IFS)
(নোট করুন যে বোর্ন শেল এবং ksh88 এ সঠিকভাবে কাজ করার $IFS
জন্য স্পেস অক্ষর থাকতে হবে "$@"
(একটি বাগ), এবং বোর্ন শেল-এ আপনি উপরের উপাদানগুলিতে অ্যাক্সেস করতে পারবেন না $9
( ${10}
কাজ করবে না, আপনি এখনও করতে পারবেন shift 1; echo "$9"
বা লুপ করতে পারবেন) তাদের))।