قابلية النقل
Portability
مفهوم
~17 دقيقة
قابلية النقل — Portability
ليس كل Bash متطابقاً. macOS قد يأتي بإصدار Bash قديم، بينما توزيعات Linux غالباً أحدث. بعض الميزات مثل associative arrays تحتاج Bash 4+. إذا كتبت سكربتاً سيعمل على أجهزة متعددة، تحقق من الإصدار أو تجنب الميزات غير المتاحة.
استخدم #!/usr/bin/env bash عندما تريد Bash من البيئة، لا مساراً ثابتاً قد يختلف. لكن هذا لا يحل اختلاف الإصدار. يمكنك قراءة ${BASH_VERSION} والتحقق من الحد الأدنى. إذا كان السكربت يحتاج associative arrays، قل ذلك صراحة.
كذلك بعض أوامر النظام تختلف. sed -i مثال شهير: يعمل بطريقة مختلفة بين GNU sed وBSD sed. لذلك في السكربتات القابلة للنقل، اكتب إلى ملف جديد بدلاً من تعديل مباشر، أو وثق الاعتماد.
مثال تحقق إصدار
script.sh
Output:
هذا لا يعني أن كل سكربت يحتاج تحقق إصدار. أضفه عندما تعتمد على ميزة معروفة الاختلاف.
تحدي — Challenge
استخدم متغير major واطبعه