Latest web development tutorials

التحكم في العمليات قذيفة

وجافا، PHP وغيرها من اللغات ليست هي نفسها، التحكم في التدفق ش ليست فارغة، على سبيل المثال (وفيما يلي هو الكتابة PHP التحكم في العمليات):

<?php
if (isset($_GET["q"])) {
    search(q);
}
else {
    // 不做任何事情
}

في ش / باش قد لا تكون كذلك في الكتابة، يتم تنفيذ أي بيان إذا كان فرع آخر، لا أكتب هذا آخر.


إذا آخر

إذا

إذا جملة البيان:

if condition
then
    command1 
    command2
    ...
    commandN 
fi

سطر واحد (لموجه الأوامر النهائي):

if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi

يتم عكس نهاية فاي إذا الإملائي في وقت لاحق سوف تواجه مماثل.

إذا آخر

إذا تركيب آخر:

if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi

عدا ذلك، إذا آخر

عدا ذلك، إذا تركيب آخر:

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

الأمثلة التالية تحديد ما إذا كان اثنين من المتغيرات على قدم المساواة:

a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi

الإخراج:

a 小于 b

إذا غالبا ما تستخدم عبارات شيء آخر بالتزامن مع قيادة الاختبار على النحو التالي:

num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
    echo '两个数字相等!'
else
    echo '两个数字不相等!'
fi

الإخراج:

两个数字相等!

لحلقة

مثل لغات البرمجة الأخرى، دعم شل للحلقة.

الشكل العام للللحلقة:

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

سطر واحد:

for var in item1 item2 ... itemN; do command1; command2… done;

عندما تكون قيمة المتغير في القائمة، لحلقة التي يتم تنفيذها مرة واحدة كل الأوامر، أسماء المتغيرات الحصول على قائمة من القيمة الحالية. يمكن أن تكون قيادة أية أوامر قذيفة وبيانات صحيحة. في القائمة يمكن أن تشمل استبدال سلسلة واسم الملف.

في القائمة هو اختياري، إذا كنت لا تستخدم، لإعادة التدوير معلمات سطر الأوامر الموقع.

على سبيل المثال، من اجل القائمة الانتاج الحالي من الأرقام:

for loop in 1 2 3 4 5
do
    echo "The value is: $loop"
done

الإخراج:

The value is: 1
The value is: 2
The value is: 3
The value is: 4
The value is: 5

بالتتابع إخراج سلسلة من الأحرف:

for str in 'This is a string'
do
    echo $str
done

الإخراج:

This is a string

في حين بيان

في حين حلقة لتنفيذ باستمرار سلسلة من الأوامر، كما أنها تستخدم لقراءة البيانات من ملف المدخلات؛ الأمر عادة اختبار الظروف. والشكل هو:

while condition
do
    command
done

ما يلي هو جزء أساسي بينما ظروف الاختبار حلقة: إذا كثافة أقل من أو يساوي 5، ترجع شرط صحيح. الباحث تبدأ من الصفر في كل مرة تجهيز حلقة، بالإضافة إلى 1 كثافة العمليات. تشغيل البرنامج النصي أعلاه إرجاع عدد 1-5، ثم إنهاء.

#!/bin/sh
int=1
while(( $int<=5 ))
do
        echo $int
        let "int++"
done

تشغيل البرنامج النصي، الإخراج:

1
2
3
4
5

استخدام المستخدم السماح باش الأوامر، والذي يستخدم لإجراء واحد أو أكثر من أشكال التعبير وحسابات متغيرة لا تحتاج إلى إضافة $ لتمثيل المتغيرات، وتحديدا المتطلبات: دعونا باش القيادة

.

في حين حلقة يمكن استخدامها لقراءة المعلومات وحة المفاتيح. في المثال التالي، يتم تعيين إدخال المعلومات إلى فيلم متغير، اضغط على <Ctrl-D> نهاية الحلقة.

echo '按下 <CTRL-D> 退出'
echo -n '输入你最喜欢的电影名: '
while read FILM
do
    echo "是的!$FILM 是一部好电影"
done

تشغيل البرنامج النصي، خرج مشابهة لما يلي:

按下 <CTRL-D> 退出
输入你最喜欢的电影名: w3cschool本教程
是的!w3cschool本教程 是一部好电影

حلقة لانهائية

اللانهائي تركيب الحلقة:

while :
do
    command
done

أو

while true
do
    command
done

أو

for (( ; ; ))


حتى حلقة

حتى ينفذ حلقة في سلسلة من الأوامر حتى الشرط صحيحا عندما توقفت.

حتى حلقة وعلى الرغم من حلقة على النهج المعاكس.

عادة حين حلقة حتى أفضل التداول، ولكن في مرحلة ما - وفقط في حالات نادرة، حتى دورة أكثر فائدة.

حتى في بناء الجملة:

until condition
do
    command
done

الظروف قد يكون أي ظروف الاختبار، يحدث اختبار في نهاية الدورة، وحلقة أعدم الأقل مرة واحدة في - يرجى ملاحظة هذه النقطة.


حالة

قذيفة بيان الحالة هو أكثر العبارات المختارة. يمكنك استخدام العبارة حالة تطابق قيمة مع نمط، وإذا كانت مباراة ناجحة، تنفيذ الأوامر مطابقة. شكل بيان الحالة كما يلي:

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

حالة العمل كما هو مبين أعلاه. يجب أن يتبع القيمة من خلال كلمة في كل نموذج يجب أن تغلق قوسين. يمكن أن تكون قيمة متغير أو ثابت. بعد مطابقة نمط ثابت مع القيم الموجودة خلالها جميع الأوامر المنفذة حتى ؛؛.

فإن قيمة كل مباراة الكشف عن نمط. مرة واحدة مطابقة النمط، نمط مطابقة بعد تنفيذ الأمر الموافق لم يعد الاستمرار في طرق أخرى. إذا لم يكن هناك مطابقة نمط، استخدام علامة النجمة * لالتقاط قيمة، ثم قم بتشغيل وراء الأمر.

يطالب النصي التالي ل1-4، مع كل نمط مطابقة:

echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
    1)  echo '你选择了 1'
    ;;
    2)  echo '你选择了 2'
    ;;
    3)  echo '你选择了 3'
    ;;
    4)  echo '你选择了 4'
    ;;
    *)  echo '你没有输入 1 到 4 之间的数字'
    ;;
esac

أدخل محتوى مختلف، سيكون هناك نتائج مختلفة، مثل:

输入 1 到 4 之间的数字:
你输入的数字为:
3
你选择了 3

للخروج من حلقة

في الدورة، وأحيانا أنها لا تلبي احتياجات اضطر للخروج من حلقة عندما يكون الشرط نهاية الحلقة، يستخدم شل اثنين من الأوامر لتنفيذ هذه الميزة: استراحة ومتابعة.

قيادة استراحة

كسر قيادة يسمح من جميع حلقات (الحلقة ينهي تنفيذ كل مرة).

في المثال التالي، والسيناريو في حلقة لا نهائية حتى يقوم المستخدم بإدخال رقم أكبر من 5. للخروج من هذه الدوامة والعودة إلى قذيفة موجه، استخدم الأمر الشوط الاول.

#!/bin/bash
while :
do
    echo -n "输入 1 到 5 之间的数字:"
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
            break
        ;;
    esac
done

تنفيذ التعليمات البرمجية أعلاه، والناتج هو:

输入 1 到 5 之间的数字:3
你输入的数字为 3!
输入 1 到 5 之间的数字:7
你输入的数字不是 1 到 5 之间的! 游戏结束

استمر

تواصل وكسر القيادة أمر مشابه، مع فارق واحد، فإنه لا يقفز من جميع الحلقات، للتو من دورة الحالية.

لتعديل المثال أعلاه:

#!/bin/bash
while :
do
    echo -n "输入 1 到 5 之间的数字: "
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的!"
            continue
            echo "游戏结束"
        ;;
    esac
done

تشغيل تم العثور على رمز، وعندما يكون عدد المدخلات أكبر من 5، وهذه الحالة لن ينهي دورة، البيان صدى "اللعبة قد انتهت!" لن يتم تنفيذه.


ESAC

قواعد اللغة ولغة الاختلافات في حالة الأسرة C كبيرة، فإنه يأخذ ESAC (القضية هي بدورها) بمناسبة نهاية كل فرع الحال مع قوس الصحيح، ممثلة من قبل اثنين من الفواصل المنقوطة كسر.