Shell編程(1)

Shell編程:

    編程語言:機器語言、匯編語言、高級語言

        高級語言:

            靜態語言:編譯型語言

            靜態語言:編譯型語言

                強類型(變量)

                    變量:\\變量在使用前,必須事先聲明,甚至還需要初始;。

                事先轉換成可以執行格式

                C、C++、JAVA、C#

            動態語言:解釋型語言,on the fly

                弱類型 \\邊解釋邊執行。

                變量:\\變量用時聲明,甚至不區分類型。

                PHP、SHELL、Python、Perl

    變量:內存空間,命名

        內存:編址的存儲單元

        變量類型:事先確定數據的存儲格式和長度;

            字符

            數值

                整型

                浮點型

    邏輯運算:

        與:只要有一個為假,結果一定為為假

        或:只要有一個為真,結果一定為真



我是分割線

行間距太大,請求調整


Shell

    變量賦值:

        'VAR_NAME=VALUE'

    BASH變量類型:

        環境變量

        本地變量(局部變量)

        位置變量

        特殊變量

            本地變量:

                #VARNAME=VALUE':作用域整個bash進程;

            局部變量:

                # local VARNAME=VALUE:;'作用域為當前代碼段

            環境變量:

                # export VARNAME=VALUE':作用域為當前shell進程及其子進程;

            位置變量

                $1,$2,…

                    . root/filetest3.sh /etc/passwd /tmp/testdir

                    $1=/etc/passwd $2=/tmp/testdir

            特殊變量:

                $?:上一個命令的執行狀態返回值;

                    程序執行,可能有兩類的返回值:

                        '1、程序執行結果'

                        '2、程序狀態返回代碼(0-255)'

                            0:正確執行

                            1-255:錯誤執行,1,2,127,系統預留

                    "導出"

                $#:參數的個數

                $*:參數列表

                $@:參數列表

            撤銷變量:

                # unset VARNAME'

            查看shell中的變量

                # set

            查看當前shell中環境變量:

                # printenv

                # env

                # export

            》腳本在執行時會啟動一個子sehll進程;

                》命令行中啟動的腳本會繼承當前shell環境變量;

                》系統自動執行的腳本(非命令行啟動)就需要自我定義需要各環境變量;

練習:寫一個腳本,完成一下任務

    1、添加5各用戶,user1,…,user5

    2、每個用戶的密碼同名,而且要求添加密碼完成以后不顯示passwd命令的執行結果信息;

    3、每個添加完成后,都要顯示用戶某某已經成功添加

練習:寫一個腳本,完成一下任務

    1、使用一個變量保存一個用戶名;

    2、刪除此變量中的用戶,且一并刪除其家目錄;

    3、顯示"用戶刪除完成"類信息

條件判斷:

    如果用戶不存在

        添加用戶,給密碼并顯示添加成功;

    否則

        顯示如果已經存在,沒有添加;

    bash中如何實現添加判斷?

        添加測試類型:

            整數測試

                    '-eq:測試兩個整數是否相等;比如 $A -eq $B

                '-ne:測試兩個整數是否相等;不等,為真;相等,為假

                    '-gt:測試一個整數是否大于另一個數;大于,為真;否則,為假

                '-lt:測試一個整數是否大于另一個數;小于,為真;否則,為假

                    '-ge:大于或等于

                    '-le:小于或等于

                        # [ $EXPRESSION -eq 0 ] \\測試表達式的用法。

                   # [[ $EXPRESSION ]]

                        # test expression

            字符測試

                ==:測試是否相等,相等為真,不等為假

                !=:測試是否不等,不等為真,等為假

            文件測試

                -e FILE:測試文件是否存在

                -f FILE:測試文件是否為普通文件

            -d FILE:測試指定路徑是否為目錄

                -r FILE:測試當前用戶對制定文件是否有讀取權限;

                -w FILE:測試當前用戶對制定文件是否有寫權限;

                -x FILE:測試當前用戶對制定文件是否有執行權限;


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


shell中如何進行運算:

    A=3

    B=6

        1、let 算術運算表達式

            # let C=$A+$B

            # echo $C

        2、$[算術運算表達式]

            # C=$[$A+$B]

            # echo $C

        3、$((算術運算表達式))

            echo $(($A+$B))


    '單分支if語句

        if 判斷語句; then

            語句;

            語句;

        fi

    '雙分支if語句

        if 判斷語句; then

            語句

            語句

        else

            語句

            語句

        fi

    '多分支if語句

        if 判斷條件; then

            statement1

            …

        elif 判斷條件;then

            statement2

            …

        elif 判斷條件;then

            statement3

            …

        else #前面所有的條件都不滿足,才執行這個

            statement4

            …

        fi

    case語句

        case VALUE in

        1)

            comd……

            ;;

        2)

            conmd…….

            ;;

        …)

            comd…….

            ;;

        esac


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


循環:進入條件,退出條件

    for

        for 變量 in 列表; do

            循環體

        done

        如何生成列表:

            {1..100}

            `seq 起始數 步進長度 結束數`

        declare -i SUM=0

            -x:將一個變量聲明為環境變量

        for循環的特殊格式:

            for ((控制變量初始化;條件判斷表達式;控制變量的修正表達式));do

                循環體

            done

                控制變量初始化:僅在運行到循環代碼段時執行一次

                控制變量的修正表達式:每輪循環結束會先進行控制變量修正運算而后再做條件判斷

    while

        while CONDITION; do

            循環體

        done

            CONDITION:循環控制條件;進入循環之前,先做一次判斷;每一次循環之后會再次做判斷;條件為“ true”,則執行

    一次循環;直到條件測試狀態為“ false”終止循環

            因此: CONDTION一般應該有循環控制變量;而此變量的值會在循環體不斷地被修正

                進入條件: CONDITION為true;

                退出條件: CONDITION為false

    until

        until CONDITION; do

            循環體

        done

        CONDITION:同上相反

            進入條件: CONDITION 為false

            退出條件: CONDITION 為true

                                                2016-08-17-15:34:57


原創文章,作者:皺 多利亞,如若轉載,請注明出處:http://www.www58058.com/36815

(0)
皺 多利亞皺 多利亞
上一篇 2016-08-18
下一篇 2016-08-18

相關推薦

  • nginx學習筆記

    深入理解Nginx 一、Nginx是什么? 二、為什么選擇Linux ? 三、Nginx生成的文件有哪些? 四、Nginx的配置詳解? 五、模塊功能詳解 六、虛擬主機配置詳解?                 一、Nginx是什么? Nginx(engine X)是一個高性能的H…

    Linux干貨 2017-03-15
  • Linux中的網絡管理

    1. ifconfig命令的使用方法 ifconfig是一個比較老的命令了,以后可能會慢慢被ip命令替代。ifconfig命令可以用來配置網卡ip地址,配置網卡別名等信息。 ifconfig ifconfig 網絡設備名:用來查看網卡的信息,如ip地址,子網掩碼,MAC地址等信息 ifconfig eth0 add 172.16.0.35/16:配置eth0…

    2017-05-02
  • 第十八周作業

    1.LNMP架構添加Memcached支持,并驗證其緩存結果 Memcache是一個高性能的分布式的內存對象緩存系統,通過在內存里維護一個統一的巨大的hash表,它能夠用來存儲各種格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。簡單的說就是將數據調用到內存中,然后從內存中讀取,從而大大提高讀取速度。 Memcached是以守護程序(監聽)方式運行于一…

    2017-07-07
  • 22期第三周課堂作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who |cut -d" " -f 1 |uniq     2、取出最后登錄到當前系統的用戶的相關信息。 […

    Linux干貨 2016-08-29
  • Linux 文件系統權限

    一、簡述權限  文件系統的權限管理機制的建立,約束了用戶對數據的操作。 1、對系統安全而言  管理員的操作權限非常大,足以破壞系統,權限機制將管理員與普通用戶之間區分開,防止系統被隨意破壞。 2、對用戶而言  Linux是一個多用戶的操作系統,不同用戶間為了防止其他人破壞數據或訪問數據,文件系統的權限管理是非常必要的。 二、文件…

    Linux干貨 2016-08-04
  • 文件管理

    compress:壓縮命令 -d:解壓縮(=uncompress) -c:結果輸出到標準輸出,不刪除原文件 -v:顯示詳情 zcat:不解壓文件查看內容   gzip:壓縮命令 -d:解壓縮 -c:結果輸出到標準輸出,不刪除原文件 -#:1-9代表壓縮比,默認為6 zcat:不解壓文件查看內容   bzip2:壓縮命令 -k:保留原文件 …

    Linux干貨 2016-08-18

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-19 10:14

    對腳本常見的語句語法總結的和詳細,腳本學習更重要的是多看多寫,作業要好好完成。

欧美性久久久久