আমি যতদূর জানি, [[
এটির বর্ধিত সংস্করণ [
, তবে আমি [[
কীওয়ার্ড হিসাবে দেখলে এবং [
বিল্টিন হিসাবে দেখানো হলে আমি বিভ্রান্ত হয়ে পড়ি ।
[root@server ~]# type [
[ is a shell builtin
[root@server ~]# type [[
[[ is a shell keyword
টিএলডিপি বলছে
বিল্টিন একই নামের সিস্টেম কমান্ডের প্রতিশব্দ হতে পারে তবে বাশ এটিকে অভ্যন্তরীণভাবে প্রতিবিম্বিত করে। উদাহরণস্বরূপ, ব্যাশ ইকো কমান্ডটি / বিন / প্রতিধ্বনি হিসাবে এক নয়, যদিও তাদের আচরণ প্রায় অভিন্ন।
এবং
একটি কীওয়ার্ড একটি সংরক্ষিত শব্দ, টোকেন বা অপারেটর। কীওয়ার্ডগুলির শেলের একটি বিশেষ অর্থ রয়েছে এবং প্রকৃতপক্ষে শেলের সিনট্যাক্সের বিল্ডিং ব্লক। উদাহরণ হিসাবে, যখন, যখন, কর, এবং! কীওয়ার্ড হয়। বিল্টিনের অনুরূপ, একটি কীওয়ার্ডটি হার্ড-কোড করে বাশকে দেওয়া হয় তবে বিল্টিনের বিপরীতে কোনও কীওয়ার্ড নিজেই কোনও কমান্ড নয়, বরং কমান্ড কনস্ট্রাক্টের সাবুনিট। [2]
এটি কি [
এবং [[
একটি কীওয়ার্ড উভয়ই তৈরি করা উচিত নয় ? আমি এখানে কি অনুপস্থিত কিছু আছে? এছাড়াও, এই লিঙ্কটি আবারও নিশ্চিত করে যে উভয় [
এবং [[
একই ধরণের হওয়া উচিত।
if "[" $x -eq 3 ]
হিসাবে: প্রত্যাশার মতো কাজ করে (কারণ বাশ আহ্বান করা আদেশটি সন্ধান করে [
এবং এটি বিদ্যমান) তবে কাজ if "[[" $x -eq 3 ]]
করে না (কারণ আবারও বাশ উপযুক্ত নামের একটি আদেশ সন্ধান করে, কিন্তু সেখানে কিছু নেই) [[
কমান্ড)।
/usr/bin/echo
, কিন্তু তার মানে এই নয় যে এটি একটি নয় builtin ।