最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell腳本的條件控制和循環(huán)語(yǔ)句

 更新時(shí)間:2016年05月01日 09:57:55   作者:飛鴻影~  
這篇文章主要介紹了Shell腳本的條件控制和循環(huán)語(yǔ)句的相關(guān)資料,需要的朋友可以參考下

條件判斷:if語(yǔ)句

語(yǔ)法格式:

if [ expression ]
then
Statement(s) to be executed if expression is true
fi

注意:expression 和方括號(hào)([ ])之間必須有空格,否則會(huì)有語(yǔ)法錯(cuò)誤。

if 語(yǔ)句通過關(guān)系運(yùn)算符判斷表達(dá)式的真假來決定執(zhí)行哪個(gè)分支。Shell 有三種 if ... else 語(yǔ)句:

if ... fi 語(yǔ)句
if ... else ... fi 語(yǔ)句
if ... elif ... else ... fi 語(yǔ)句

示例:

#!/bin/bash/
a=10
b=20
if [ $a == $b ]
then 
echo "a is equal to b"
elif [ $a -gt $b ]
then
echo "a is greater to b"
else
echo "a is less to b"
fi

if ... else 語(yǔ)句也可以寫成一行,以命令的方式來運(yùn)行:

a=10;b=20;if [ $a == $b ];then echo "a is equal to b";else echo "a is not equal to b";fi;

if ... else 語(yǔ)句也經(jīng)常與 test 命令結(jié)合使用,作用與上面一樣:

#!/bin/bash/
a=10
b=20
if test $a == $b 
then 
echo "a is equal to b"
else
echo "a is not equal to b"
fi

分支控制:case語(yǔ)句

case ... esac 與其他語(yǔ)言中的 switch ... case 語(yǔ)句類似,是一種多分枝選擇結(jié)構(gòu)。

示例:

#!/bin/bash/
grade="B"
case $grade in 
"A") echo "Very Good!";;
"B") echo "Good!";;
"C") echo "Come On!";;
*) 
echo "You Must Try!"
echo "Sorry!";;
esac

轉(zhuǎn)換成C語(yǔ)言是:

#include <stdio.h>
int main(){
char grade = 'B';
switch(grade){
case 'A': printf("Very Good!");break;
case 'B': printf("Very Good!");break;
case 'C': printf("Very Good!");break;
default: 
printf("You Must Try!");
printf("Sorry!");
break;
}
return 0;
}

對(duì)比看就很容易理解了。很相似,只是格式不一樣。

需要注意的是:

取值后面必須為關(guān)鍵字 in,每一模式必須以右括號(hào)結(jié)束。取值可以為變量或常數(shù)。匹配發(fā)現(xiàn)取值符合某一模式后,其間所有命令開始執(zhí)行直至 ;;。;; 與其他語(yǔ)言中的 break 類似,意思是跳到整個(gè) case 語(yǔ)句的最后。

取值將檢測(cè)匹配的每一個(gè)模式。一旦模式匹配,則執(zhí)行完匹配模式相應(yīng)命令后不再繼續(xù)其他模式。如果無一匹配模式,使用星號(hào) * 捕獲該值,再執(zhí)行后面的命令。

再舉一個(gè)例子:

#!/bin/bash
option="${1}"
case ${option} in
"-f") FILE="${2}"
echo "File name is $FILE"
;;
"-d") DIR="${2}"
echo "Dir name is $DIR"
;;
*) 
echo "`basename ${0}`:usage: [-f file] | [-d directory]"
exit 1 # Command to come out of the program with status 1
;;
esac

運(yùn)行結(jié)果:

$./test.sh
test.sh: usage: [ -f filename ] | [ -d directory ]
./test.sh -f index.html
File name is index.html

這里用到了特殊變量${1},指的是獲取命令行的第一個(gè)參數(shù)。

for循環(huán)

shell的for循環(huán)與c、php等語(yǔ)言不同,同Python很類似。下面是語(yǔ)法格式:

for 變量 in 列表

do
command1
command2
...
commandN
done

示例:

#!/bin/bash/
for value in 1 2 3 4 5
do 
echo "The value is $value"
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

運(yùn)行結(jié)果:

This is a string

遍歷目錄下的文件:

#!/bin/bash
for FILE in *
do
echo $FILE
done

上面的代碼將遍歷當(dāng)前目錄下所有的文件。在Linux下,可以改為其他目錄試試。

遍歷文件內(nèi)容:

city.txt

beijing
tianjin
shanghai
#!/bin/bash
citys=`cat city.txt`
for city in $citys
echo $city
done

輸出:

beijing
tianjin
shanghai

while循環(huán)

只要while后面的條件滿足,就一直執(zhí)行do里面的代碼塊。

其格式為:

while command
do
Statement(s) to be executed if command is true
done

命令執(zhí)行完畢,控制返回循環(huán)頂部,從頭開始直至測(cè)試條件為假。

示例:

#!/bin/bash
c=0;
while [ $c -lt 3 ]
do
echo "Value c is $c"
c=`expr $c + 1`
done

輸出:

Value c is 0
Value c is 1
Value c is 2

這里由于shell本身不支持算數(shù)運(yùn)算,所以使用expr命令進(jìn)行自增。

until循環(huán)

until 循環(huán)執(zhí)行一系列命令直至條件為 true 時(shí)停止。until 循環(huán)與 while 循環(huán)在處理方式上剛好相反。一般while循環(huán)優(yōu)于until循環(huán),但在某些時(shí)候,也只是極少數(shù)情況下,until 循環(huán)更加有用。

將上面while循環(huán)的例子改改,就能達(dá)到一樣的效果:

#!/bin/bash
c=0;
until [ $c -eq 3 ]
do
echo "Value c is $c"
c=`expr $c + 1`
done

首先do里面的語(yǔ)句塊一直在運(yùn)行,直到滿足了until的條件就停止。

輸出:

Value c is 0
Value c is 1
Value c is 2

跳出循環(huán)

在循環(huán)過程中,有時(shí)候需要在未達(dá)到循環(huán)結(jié)束條件時(shí)強(qiáng)制跳出循環(huán),像大多數(shù)編程語(yǔ)言一樣,Shell也使用 break 和 continue 來跳出循環(huán)。

break

break命令允許跳出所有循環(huán)(終止執(zhí)行后面的所有循環(huán))。

#!/bin/bash
i=0
while [ $i -lt 5 ]
do
i=`expr $i + 1`
if [ $i == 3 ]
then
break
fi
echo -e $i
done

運(yùn)行結(jié)果:

1
2

在嵌套循環(huán)中,break 命令后面還可以跟一個(gè)整數(shù),表示跳出第幾層循環(huán)。例如:

break n

表示跳出第 n 層循環(huán)。

continue

continue命令與break命令類似,只有一點(diǎn)差別,它不會(huì)跳出所有循環(huán),僅僅跳出當(dāng)前循環(huán)。

#!/bin/bash
i=0
while [ $i -lt 5 ]
do
i=`expr $i + 1`
if [ $i == 3 ]
then
continue
fi
echo -e $i
done

運(yùn)行結(jié)果:

1
2
4
5

以上內(nèi)容是小編給大家介紹的Shell腳本的條件控制和循環(huán)語(yǔ)句的相關(guān)知識(shí),希望對(duì)大家有所幫助!

相關(guān)文章

  • Linux通過命令壓縮與解壓縮的方法| tar, tar.gz, tar.bz2

    Linux通過命令壓縮與解壓縮的方法| tar, tar.gz, tar.bz2

    這篇文章主要介紹了Linux通過命令壓縮與解壓縮的方法| tar, tar.gz, tar.bz2,內(nèi)容囊括了打包、壓縮、解壓縮的基本概念,最后通過實(shí)例講解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧
    2017-04-04
  • linux目錄管理方法介紹

    linux目錄管理方法介紹

    這篇文章介紹了linux目錄管理的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Linux?Shell腳本中如何獲取命令運(yùn)行的結(jié)果

    Linux?Shell腳本中如何獲取命令運(yùn)行的結(jié)果

    腳本中常常要獲取一些命令的執(zhí)行結(jié)果,比如當(dāng)前目錄pwd、當(dāng)前時(shí)間date等等,下面這篇文章主要給大家介紹了關(guān)于Linux?Shell腳本中如何獲取命令運(yùn)行的結(jié)果,需要的朋友可以參考下
    2023-06-06
  • linux定時(shí)任務(wù)出現(xiàn)command not found解決辦法

    linux定時(shí)任務(wù)出現(xiàn)command not found解決辦法

    這篇文章主要介紹了 linux定時(shí)任務(wù)出現(xiàn)command not found解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • CPU負(fù)載監(jiān)控腳本代碼

    CPU負(fù)載監(jiān)控腳本代碼

    CPU負(fù)載監(jiān)控腳本代碼,需要的朋友可以參考下
    2013-01-01
  • shell正則表達(dá)式新手入門教程

    shell正則表達(dá)式新手入門教程

    在Shell腳本編程中,正則表達(dá)式是處理文本字符串不可或缺的工具,通過特殊字符如"^"、"$"、"."、"*"和"[]"等,可以實(shí)現(xiàn)從匹配行首尾、任意字符到指定范圍內(nèi)字符的復(fù)雜文本處理,需要的朋友可以參考下
    2024-11-11
  • Linux中的host命令應(yīng)用實(shí)例詳解

    Linux中的host命令應(yīng)用實(shí)例詳解

    這篇文章主要介紹了Linux中的host命令應(yīng)用舉例的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • shell編程入門之正則表達(dá)式實(shí)例代碼

    shell編程入門之正則表達(dá)式實(shí)例代碼

    正則表達(dá)式又稱規(guī)則表達(dá)式,是對(duì)字符串操作的一種邏輯公式,下面這篇文章主要給大家介紹了關(guān)于shell編程入門之正則表達(dá)式的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • Shell腳本實(shí)現(xiàn)從文件夾中遞歸復(fù)制文件

    Shell腳本實(shí)現(xiàn)從文件夾中遞歸復(fù)制文件

    這篇文章主要介紹了Shell腳本實(shí)現(xiàn)從文件夾中遞歸復(fù)制文件,本文腳本實(shí)現(xiàn)從十層左右的文件夾中復(fù)制所有文件到一目錄中,需要的朋友可以參考下
    2015-02-02
  • shell中set?-e的具體使用

    shell中set?-e的具體使用

    set?-e是一個(gè)Shell命令,它用于在腳本運(yùn)行時(shí)自動(dòng)退出,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06

最新評(píng)論

右玉县| 平泉县| 游戏| 连平县| 天全县| 永宁县| 澎湖县| 赣榆县| 浙江省| 定远县| 柏乡县| 西宁市| 乌恰县| 雅江县| 江西省| 漳州市| 东丰县| 彩票| 康保县| 怀来县| 宜城市| 逊克县| 麻江县| 昭觉县| 南开区| 临沂市| 留坝县| 土默特左旗| 布拖县| 长子县| 临邑县| 蓬安县| 子洲县| 宝清县| 南丹县| 酒泉市| 宝应县| 小金县| 聂荣县| 张掖市| 喀喇|