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 10:10
下一篇 2016-08-18 10:10

相關推薦

  • Linux系統的軟硬連接的區別

    Linux系統的軟硬連接的區別 M21-陸東貴 CentOS 7.2 Linux鏈接分兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為符號鏈接(Symbolic Link)。默認情況下,ln命令產生硬鏈接。 一、  硬鏈接: 硬連接是指通過索引節點來進行連接Linux鏈接分兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為符號鏈接…

    Linux干貨 2016-10-19
  • 第三周作業

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

    Linux干貨 2016-12-26
  • ps查看進程

    ps命令 ps [OPTION]支持三種選項UNIX選項 如-A -eBSD選項 如aGNU選項 如–help選項:默認顯示當前終端中的進程a 選項包括所有終端中的進程x 選項包括不連接終端的進程u 選項顯示進程所有者的信息f 選項顯示進程樹,相當于 –forestk|–sort 屬性 對屬性排序,屬性前加- 表示倒序o …

    2017-12-19
  • Nginx 功能概述與基礎應用!

           本篇博客主要有三個部分組成,目的在于讓大家了解ningx的主要功用及作為web server的基礎配置;通過本篇博客能夠讓您對nginx理解更加深入,以便于更好的使用它!                  …

    2017-05-14
  • 關于壓測的宏觀個人總結

    工作角色定位 首先先從宏觀角度來評估下本次的壓測工作. 從工作職責上說本次壓測理應由組內其它同學來完成,個人從旁協助或指導即可。團隊成員的成長對我個人來說才是更大的成長。所以即使這次壓測工作完成的再出色,都會因為是由我來完成的,所以都不能稱之為優秀的。對我個人的成長最多是項目經驗的增長和問題的積累,但對組員來說如何讓他們做到現有成果的80%是我需要幫助他們來…

    Linux干貨 2015-04-21
  • MariaDB之MHA配置

    工作拓撲 一、MHA簡明:     MHA(Master HA)是一款開源的MySQL的高可用程序,它為MySQL主從復制架構提供了    automating master failover 功能。MHA在監控到master節點故障時,會提升其中    擁有最新數據的…

    2014-10-08

評論列表(1條)

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

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

欧美性久久久久