ملخص كتابة سكربت باش - Bash Shell Script Cheatsheet

· · 795 كلمة · 4 دقيقة قراءة

سكربت صدفة باش (Bash) تجدها في أنظمة يونكس ، و لينكس ، و ماك. وتستطيع أيضاً تثبيت باش في لينكس داخل نظام ويندوز أيضاً.

أول سطر في أي سكربت مكتوب بلغة باش يبدأ بهذا السطر #! /bin/bash لأن برنامج تشغيل باش موجود في المسار /bin/bash. للتأكد من مسار باش ، استخدم هذا الأمر which bash.

طباعة المعلومات على الشاشة 🔗

تستطيع استخدام echo Hello, World! أو echo "Hello, world!".

المتغيرات وطباعتهم على الشاشة 🔗

NAME = "Abanoub"
echo "My name is $NAME"

أو استخدم هذه الطريقة

NAME = "Abanoub"
echo "My name is ${NAME}"

طلب المعلومات من المستخدم 🔗

read -p "Enter your name: " NAME
echo "Hello, $NAME!"

If Statement | الشرط 🔗

أبسط شكل للشرط في سكربت باش:

if ["$NAME" == "Abanoub"]
then
    echo "Yourname is Abanoub!"
fi

لاحظ أن نهاية if هي fi وهي عكس حروف if.

تحديد ماذا يحدث إن لم يتحقق الشرط عن طريق if else في سكربت باش:

if ["$NAME" == "Abanoub"]
then
    echo "Yourname is Abanoub!"
else
    echo "Yourname is NOT Abanoub"
fi

استخدام شرط ثم شرط آخر عن طريق else if (elif) في سكربت باش:

if ["$NAME" == "Abanoub"]
then
    echo "Yourname is Abanoub!"
elif ["$NAME" == "Jack"]
then
    echo "Yourname is Jack!"
else
    echo "Yourname is NOT Abanoub NOR Jack!"
fi

المقارنات المنطقية 🔗

يُمكنك استخدام هذه هذه المعاملات المنطقية للمقارنة:

المعامل المنطقي - Logic OperatorMeaning - المعني
-eqequal to (يساوي) (the same meaning of == in other programming languages)
-nenot equal (لا يساوي) (the same meaning of != in other programming languages)
-gtgreater then (أكبر من) (the same meaning of > in other programming languages)
-gegreater than or equal to (أكبر من أو يساوي) (the same meaning of >= in other programming languages)
-ltless than (أقل من) (the same meaning of < in other programming languages)
-leless than or equal to (أقل من أو يساوي) (the same meaning of <= in other programming language)

واستخدمهم بهذا الشكل:

NUM1 = 3
NUM2 = 5
if ["$NUM!" -gt "$NUM2"]
then
    echo "$NUM1 is greater then $NUM2"
fi

شروط التحقق من حالات الملفات أو نوعيتها 🔗

هناك أعلام للمقارنة خاصة بتحديد حالة الملف أو نوعيته (file condition flags):

الرمز - symbolالمعني - meaning
-dis directory? (هل مجلد؟)
-eexists? (موجود؟) (usually we use -f instead)
-fa file? (ملف ؟)
-gis group id set?
-rreadable? (قابل للقراءة؟)
-snon-zero size? (مساحة الملف غير صفرية؟)
-uuser id is set?
-wwritable? (قابل للكتابة والتعديل ؟)
-xexecutable? (قابل للتشغيل؟)

واستخدامهم بهذا الشكل:

FILE = "test.txt"
if [ -f "$FILE" ]
then
    echo "$FILE is a file"
else
    echo "$FILE is NOT a file"
fi

Case Statement - التعامل مع الحالات المختلفة 🔗

Case تُسمَّى switch case في اللغات الأخرى, وبعض اللغات الأخرى الحديثة تُسميها when case مثل لغة كوتلن.

إليك طريقة التعامل مع الحالات المختلفة لمتغير واحد في لغة باش:

read -p "Are you 25? Y/N" ANSWER
case "$ANSWER" in
    [yY]|[yY][eE][sS])
        echo "Your age is mine :)"
        ;;
    [nN]|[nN][oO])
        echo "Nooo, your age is different than mine :("
        ;;
    *)
        echo "Please enter y/yes or n/no"
        ;;
    esac

لاحظ أن:

[nN] هي طريقة لإعطاء إحتمالين للحرف الواحد؛ إما الحرف الصغير n أو الحرف الكبير N.

[yY][eE][sS] هي كلمة yes أو YES أو أي مزيج من الحروف الكبيرة والصغيرة مثل كلمة YeS.

*) هذه هي الحالة الإفتراضية أو الحالة الأخيرة الغير محددة للمتغير (default).

esac هي كلمة الإغلاق كود الـ case حيث أنها عكس حروفها.

For Loop | التكرار 🔗

NAMES = "Abanoub Jack John Smith"
for NAME in $NAMES
    do
    echo "Hello, $NAME"
done

إليك سكربت لإعادة تسمية كل الملفات النصية *.txt مرةً واحدة بلغة باش:

FILES = $(ls *.txt)
NEW = "new"
for FILE in $FILES
    do
    echo "Renaming $FILE to new-$FILE"
    mv $FILE $NEW-$FILE
done

While Loop | التكرار 🔗

إليك طريقة كتابة كود تكرار بإستخدام while لقراءة ملف nfile.txt سطر بسطر.

LINE = 1
while read -r CURRENT_LINE
    do
    echo "$LINE: $CURRENT_LINE"
    ((LINE++))
done < "./nfile.txt"

Bash Script Function Syntax | طريقة كتابة دالة - فانكشن 🔗

function sayHello(){
    echo "Hello, World!"
}
sayHello

كتبنا دالة لطباعة عبارة Hello, World! واستدعيناها ليتم تنفيذ الكود.

Bash Script Functions with Parameters | دالة بمتغيرات 🔗

هذه هي طريقة كتابة دالة بمتغيرات (params) في NAMES = "Abanoub Jack John Smith" لغة باش :

function greet(){
    echo "Hello, I am $1 and I am $2"
}
greet "Abanoub" "30"

الرمز $1 هو أول متغير داخل للدالة (parameter), و $2 هو ثاني متغير داخل للدالة. لذلك عند استدعاء الدالة أو الفانكشن لابد من كتابة هذه المتغيرات بالترتيب بهذا الشكل greet "Abanoub" "30". وهذا يعني أن "Abanoub" هو المتغير الأول (param) $1 و "30" هو المتغير الثاني (param) $2.

نصيحة أخيرة 🔗

أنت الآن قد تعلمت طريقة كتابة لغة باش، عليك أنت تتعلم الآن أوامر باش. سأحاول شرحها فيما بعد.

التصنيفات: برمجة
مشاركة: