新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Shell編程:Linux系統環境程序設計之路

        Shell編程:Linux系統環境程序設計之路

        作者: 時間:2016-09-12 來源:網絡 收藏

        別的高級語言都有函數的感念,當然shell編程也有這個概念,當寫一個比較大型的shell程序的時候,如果沒有函數,則會到處都是重復的代碼。當然也可以調用別的腳本,但是速度會比較慢。所以函數是必不可少并且非常重要的一個東西。

        本文引用地址:http://www.104case.com/article/201609/305053.htm

        定義函數的格式

        function_name(){...}

        例子:

        //~ fun_s

        show(){

        echo show $*

        }

        echo $*

        echo after function

        show c d

        echo $*

        exit 0

        /////////////////////////////

        $./fun_s a b

        結果是

        a b

        after function

        c d

        a b

        從上面的例子可以看出,當腳本調用函數的時候,腳本程序的位置參數會被替換成函數的位置參數,并且函數調用結束后還原。

        return:

        //~ return_s

        #!/bin/bash

        first(){

        echo is return

        }

        second(){

        echo before return

        return 0

        echo after return

        }

        return_value=$(first)

        echo $return_value

        secondecho return 0  echo return other

        exit 0

        //////////////////////////////////////

        輸出

        is return

        before return

        return 0

        該例子說明可以捕獲函數內echo的字符串,如echo $(first) , 函數在return后不會再執行下面的語句。

        secondecho return 0  echo return other 該句的輸出為 return 0。這里有人可能會和C語言混淆,因為在C語言里0表示的是false。而這里的0表示函數執行成功,可以理解為true,所以會輸出return 0。

        命令

        break,continue 和c語言基本類似

        echo 了解一點即可echo -n 輸出沒有換行。

        eval:

        例子:

        //~ eval_s

        #!/bin/bash

        var1=abcd

        var2=var1

        eval var3=$$var2

        echo $var3

        exit 0

        ///////////////////////////

        eval相當于一個額外的$,它給出一個變量值的值,如例子里先是$var2使var3變成$var1,又var1=abcd,所以var3變為abcd,連續解析了兩次變量。

        export:

        看下面兩個例子可以很好的說明export的作用。

        //~ export1_s

        #!/bin/bash

        var1=this is var1

        var2=this is var2

        export var2

        ./export2_s

        exit 0

        ///////////////////////////

        //~ export2_s

        #!/bin/bash

        echo $var1

        echo $var2

        exit 0

        /////////////////////////

        輸出:

        this is var2

        輸出結果說明var1為空而var2卻有值,這正是export起的作用,把var2變成了一個環境變量。

        再看個例子:

        #!/bin/bash

        echo $var1

        echo $var2

        echo $var3

        exit 0

        //////////////////////////

        //~ set-a_s

        #!/bin/bash

        set -a

        var1=var1

        var2=var2

        var3=var3

        ./set-a2_s

        exit 0

        //////////////////////////

        //~ set-a2_s

        輸出:

        var1

        var2

        var3

        set -a的作用就是把它之后聲明的所有變量都export

        printf:

        和C語言里的printf用法很相似的一個命令,使用非常方便。

        set:

        //~ set_s

        #!/bin/bash

        fun1()

        {

        echo a b c d

        }

        set $(fun1)

        echo $1

        echo $(date)

        set $(date)

        echo $1

        exit 0

        ///////////////////////

        輸出: a 2008年 03月 06日 星期四 03:57:55 CST 2008年

        date的輸出是幾個由空格分隔的值,set的作用能分隔出每個域。

        shift:

        就是讓$2變$1,$3變$2,依此類推。

        trap:

        非常有用的一個命令,用于指定接受到信號后進行的動作,系統定義了非常多的信號類型,用trap -l命令可以查看所有的信號。

        常見的幾個信號有:

        INT(2) 中斷,按下ctrl+c組合鍵引發的

        QUIT(3) 退出,按下ctrl+引發

        例子:

        //~ trap_s

        #!/bin/bash

        trap var=2 INT

        echo please enter ctrl+c

        var=1

        while [ $var = 1 ]

        do

        echo in while

        sleep 1

        done

        exit 0

        /////////////////////////

        這個例子在我按下ctrl+c后改變了var的值,所以跳出循環,程序結束。

        shell下的程序設計非常強大,你可以用它做出很多小工具,讓你的使用linux系統更加流暢。shell還有非常多的功能文中沒有提到,需要大家發現問題后再自己去解決。



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 万年县| 当阳市| 兴海县| 山阴县| 余姚市| 平乡县| 榆林市| 双柏县| 翁牛特旗| 乌拉特前旗| 鄂伦春自治旗| 南充市| 永昌县| 延庆县| 仙居县| 洛阳市| 汝州市| 大庆市| 从化市| 嘉禾县| 武定县| 鲁山县| 武义县| 阿尔山市| 太仆寺旗| 乐都县| 福建省| 抚松县| 肃宁县| 玉门市| 华安县| 晋州市| 泉州市| 南涧| 应城市| 娱乐| 平江县| 渝中区| 安国市| 黑山县| 梨树县|