變數及shell編程

來源:互聯網
上載者:User

標籤:變數及shell編程

編程能力:    

    指令碼編程

    程式設計語言:機器語言,組合語言,進階語言

進階語言:

    靜態語言:編譯型語言

        不需要藉助額外的二進位,需要一個編譯器,直接轉換為二進位啟動並執行。

        強型別(變數):變數在使用前, 必須事先聲明,甚至還需要初始化

        關鍵字:

        事先轉換成可執行格式

        c、c++、java、c#

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

        弱類型語言:變數隨時(用時)聲明,不區分類型

        邊解釋邊執行

        asp asp.net php shell python perl

面向過程:shell ,c,perl,

面積對象:java,python,perl,c++

變數類型:直接決定了變數的儲存格式,用來確定資料的儲存格式和長度

        字元

        數值

        時期

        真假型

邏輯運算:與(乘)、或、非、異或

1:真

0:假

1&0=0

0&1=0

0&0=0

1&1=1

或:只一一個為真就為真,同時為假就為假

非:!真=假 !假=真

異或:運算元相同者為假, 不同者為真,相同者為零,否者為1

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

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

            整形

            浮點型 11.23 1.123*10^1 | 0.1123*10^2

變數:記憶體空間,命名的記憶體空間,

變數名稱:

1、只能包含字母,數字,底線,並且不能數字開頭。

2、不應該跟系統中已有的環境變數重名。

3、最好做到見名知義

記憶體:編址的儲存單元

進程:

Bash變數類型:

引用變數:${VARNAME},預設{}可以省略,例:

    ANIMAL=pig

    echo "There are some ${ANIMAL}s."

    1、環境變數:

        範圍為當前shell進程及其子進程

        exprot VARNAME=VALUE "匯出"

指令碼在執行時使用時會啟動一個子shell進程

    命令列啟動的指令碼會繼承當時shell環境變數;    

    系統自動執行的指令碼(非命令列啟動)就需要自我定義需要的各環境變數

    2、本地變數(局部變數)

        bash:進程的變數

        VARNAME=VALUE,本地變數,範圍為整個bash進程有用;

        local VARNAME=VALUE,局部變數,範圍為當前程式碼片段

    3、位置變數

        $1,$1,$2......

    4、特殊變數(Bash內建的,也稱系統變數)

        是為了儲存特殊資料的,例:$?:上一個命令的執行狀態傳回值;

    程式執行結果

    程式狀態傳回碼(0-255)

        0:正確執行

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

撤消變數:

    unset VARNAME

查看當前shell中變數:

    set (包括環境變數和本地變數)

查看當前shell中的環境變數:

    printenv

    env

    export

一個變數對應多個值:

    ANIMAL=pig:dog:goat 或者:ANIMAL=$ANIMAL:pig

輸出重新導向:

>

>>

2>

2>>

&> 同時重新導向

/dev/null

id student &> /dev/null 

指令碼:命令的堆砌,按實際需要,結合命令流程式控制制機制實現的來源程式

#!/bin/bash

#注釋行,不執行

Bash中如何?條件判斷?

    條件測試類型:

    1、整數測試

    2、字元測試

    3、檔案測試

條件測試的運算式:

    [ expression ]

    [[ expression ]]

    test expression

整數比較:

    需要兩個運算元

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

         [ $A -eq $B ]

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

    -gt:測試一個數是否大於另一個數,大於為真,否則為假

    -lt:測試一個數是否小於另一個數,小於為真, 否則為假

    -ge:大於或

    -le:小於或等於

命令間的邏輯關係:

    邏輯與:&& id user1 &> /dev/null && echo "hello user1"

        第一個條件為假時,第二個條件不用判斷,最終結果已經有了。

        第一個條件為真時,第二個條件必須得判斷

    邏輯或:||

!id user6 && useradd user6 前面為假就不執行,為真就執行

id user6 || useradd user6 如果前面為真就不執行,為假就執行

如果使用者存在,就顯示使用者已存在,否則就添加此使用者:

id user1 && echo "use1 exists" || useradd user1

如果使用者不存在,就添加,否則顯示其已經存在

! id user1 && useradd user1 || echo "user1 exists"

如果使用者不存在,添加並且給密碼,否則,顯示其已經存在;

!id user1 && useradd user1 && echo "user1" | passwd --stdin user1 || echo "user1 exists"

例:

#!/bin/bash

!id user1 &> /dev/null && useradd user1 && echo "user1" | passwd --stdin user1 &> /dev/null || echo ""user1 exists."

!id user2 &> /dev/null && useradd user2 && echo "user2" | passwd --stdin user2 &> /dev/null || echo ""user2 exists."

!id user3 &> /dev/null && useradd user3 && echo "user3" | passwd --stdin user1 &> /dev/null || echo ""user3 exists."

USERS=`wc -l /etc/passwd | cut -d‘‘ -f1

echo "$USERS users"


#!/bin/bash

NAME=user1

USERID=`id -u $name`

[ $USERID -eq 0 ] && echo "This is root" || echo "This is not root" 

條件判斷,控制結構

單分支if語句:

    if判斷條件;then

        statement1

        statement2

        ...

    fi

例:

#!/bin/bash

NAME=user1

if id $NAME &> /dev/null;then

    ehco "$NAME exists."

fi


雙分支的if語句:

if 判斷條件;then

    statement1

    statement2

    ...

else

    statement1

    statement2

    ...

fi

例:

#!/bin/bash

NAME=user1

if id $NAME &> /dev/null;then

    ehco "$NAME exists."

else

    echo "$NAME not exist"

fi


#!/bin/bash

NAME=root

if [ `id -u $NAME`  -eq 0 ]; then

    echo "This is Admin"

else

    echo "This is not Admin"

fi


變數及shell編程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.