Latest web development tutorials
×

Linux หลักสูตร

Linux หลักสูตร Linux แนะนำโดยย่อ Linux ติดตั้ง Linux ขั้นตอนการเริ่มต้นระบบ Linux โครงสร้างไดเรกทอรีระบบ Linux วิธีการแก้ปัญหาลืมรหัสผ่านของคุณ Linux เข้าสู่ระบบจากระยะไกล Linux แอตทริบิวต์แฟ้มพื้นฐาน Linux ไฟล์และไดเรกทอรีการจัดการ Linux ผู้ใช้และการจัดการกลุ่มผู้ใช้ Linux การจัดการดิสก์ Linux vi/vim Linux yum คำสั่ง

Shell หลักสูตร

Shell หลักสูตร Shell ตัวแปร Shell ผ่านพารามิเตอร์ Shell ? อาร์เรย์ Shell ผู้ประกอบการ Shell echo คำสั่ง Shell printf คำสั่ง Shell test คำสั่ง Shell การควบคุมกระบวนการ Shell ฟังก์ชัน Shell Input / output เปลี่ยนเส้นทาง Shell ไฟล์มี

Linux คู่มืออ้างอิง

Linux คำสั่ง Daquan Nginx การติดตั้งและการกำหนดค่า MySQL การติดตั้งและการกำหนดค่า

การควบคุมกระบวนการเชลล์

และ Java, PHP และภาษาอื่น ๆ จะไม่เหมือนกัน, การควบคุมการไหล SH ไม่ว่างเปล่าเช่น (ต่อไปนี้คือการเขียนการควบคุมกระบวนการ PHP):

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

ในการดวลจุดโทษ / ทุบตีอาจไม่เป็นเช่นนั้นในการเขียนไม่มีคำสั่งจะถูกดำเนินการถ้าสาขาอื่นที่ไม่ได้เขียนนี้อื่น


ถ้าอื่น

ถ้า

ถ้าไวยากรณ์คำสั่ง:

if condition
then
    command1 
    command2
    ...
    commandN 
fi

บรรทัดเดียว (สำหรับพร้อมรับคำสั่ง Terminal):

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

ในตอนท้ายของ 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

ลำดับ outputs สตริงของตัวอักษร:

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

เอาท์พุท:

This is a string

ขณะที่คำสั่ง

ขณะที่ห่วงอย่างต่อเนื่องเพื่อดำเนินการชุดของคำสั่งก็ยังใช้ในการอ่านข้อมูลจากแฟ้มใส่; คำสั่งมักจะทดสอบเงื่อนไข รูปแบบคือ:

while condition
do
    command
done

ต่อไปนี้เป็นพื้นฐานในขณะที่เงื่อนไขการทดสอบห่วง: ถ้า int น้อยกว่าหรือเท่ากับ 5 เงื่อนไขผลตอบแทนจริง int เริ่มต้นจากศูนย์ในแต่ละครั้งการประมวลผลวงบวก 1 int เรียกใช้สคริปต์ดังกล่าวข้างต้นส่งกลับจำนวน 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本教程 是一部好电影

Infinite Loop

ไวยากรณ์วง จำกัด :

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 กรณีนี้จะไม่จบรอบคำสั่ง echo "เกมจะจบ!" จะไม่ถูกดำเนินการ


esac

ไวยากรณ์และภาษาที่แตกต่างกันในกรณีที่ครอบครัว C มีขนาดใหญ่ก็จะใช้เวลา esac (กรณีเป็นในทางกลับ) ทำเครื่องหมายจุดสิ้นสุดของคดีแต่ละสาขามีวงเล็บแสดงโดยสองอัฒภาคพัก