الموضوع هذا خاص بكتابة السكربت خاصة باستخدام لغة باش bash
شاركنا بما تكتشفه من طرق استخدامها والتعامل معها.
###تنقيح مشاكل البرمجة بالباش
احد المشاكل التي تواجهني عند كتابة سكربت جديد او تنفيذ سكربت كبير هي اكتشاف العلل وحلها. قد لاتدري باي خطوة حصلت المشكلة وما محتوى المتغيرات وقت التنفيذ …الخ
الحل القديم الذي كنت استخدمة هو ادراج امر echo بعد كل خطوة لمعرفة ماحصل ثم ازالتها جميعها بعد حل المشكلة وهذه طريقة مزعجة. لكن مؤخرا اكتشفت طريقة سهلة جدا لحل المشكلة.
اولا هذا مثال لتنفيذ سكربت بدون الحل الجديد:
# ./sign_drivers.sh `uname -r`
#
####الحل
في اول سطر من السكربت اضف التالي:
#!/bin/bash -x
اضافة -x بعد الامر يجعل باش يطبع الاموامر التي ينفذها وكذلك المتغيرات ومحتواها ويسبق تلك الاسطر علامة + للدلالة على انه ليس من مخرجات السكربت نفسة
مخرجات السكبرت السابق بعد التعديل:
# ./sign_drivers.sh `uname -r`
+ KVER=4.3.3-300.fc23.x86_64
+ PRIVATEKEY=/etc/cert/private_key.priv
+ PUBLICKEY=/etc/cert/public_key.der
+ SIGNSCRIPT=/usr/src/kernels/4.3.3-300.fc23.x86_64/scripts/sign-file
+ /usr/src/kernels/4.3.3-300.fc23.x86_64/scripts/sign-file sha256 /etc/cert/private_key.priv /etc/cert/public_key.der /usr/lib/modules/4.3.3-300.fc23.x86_64/extra/bbswitch.ko
+ /usr/src/kernels/4.3.3-300.fc23.x86_64/scripts/sign-file sha256 /etc/cert/private_key.priv /etc/cert/public_key.der /usr/lib/modules/4.3.3-300.fc23.x86_64/extra/vboxdrv.ko
#
ويمكن التحكم بتفعيلها وتعطيلها من داخل السكربت بالامرين التاليين:
set -x
set +x
يمكن كذلك تفعيلها وبدون التعديل على الملف (اذا كان التنقيح مؤقتاً) كالتالي:
# bash -x ./sign_drivers.sh `uname -r`
