天天看點

Linux之bash腳本程式設計---選擇執行

程式設計風格

    過程式程式設計,目的解決問題

        指令組織資料,指令的堆砌

        為了完成複雜的任務

            順序執行:周遊的方式執行,逐個運作

            選擇執行:有一種選擇标準,結果隻能有一種選擇,隻執行某些 代碼片段

            循環執行:對一類對象逐個運作相同的運算,類似于 拉磨 的方式,某些代碼連續執行多次

    對象式程式設計:

        資料為中心

程式執行的方式

    編譯:先翻譯後執行,先将進階語言轉換為目标代碼:C,java程式 --> 編譯 --> 目标代碼

    解釋:邊翻譯邊執行,為避免文法、邏輯等錯誤,一般先進行文法檢查 Shell,java,perl,python程式 --> 解釋 --> 目标代碼

bash:過程式程式設計、解釋執行

    純文字格式

    cpu上運作是由magic number指定的解釋器

    由解釋器執行文本

選擇執行

    在由if指定的條件中有2種可能,執行狀态結果為0,或執行狀态結果不為0的結果。

     單分支條件判斷

1

2

3

4

5

6

7

8

9

10

<code>if</code> <code>條件;那麼</code>

<code>    </code><code>條件的執行狀态結果為0</code>

<code>結束</code>

<code>或</code>

<code>if</code> <code>條件</code>

<code>那麼</code>

        2分支條件判斷

11

12

13

14

<code>否則</code>

<code>    </code><code>條件的執行狀态結果不為0</code>

例如:

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

<code>如果使用者存在,則添加</code>

<code># vim adduser.sh</code>

<code>#!/bin/bash</code>

<code>#</code>

<code>##判斷向腳本傳遞的參數是否小于1</code>

<code>if</code> <code>[ $</code><code># -lt 1 ]</code>

<code>then</code>

<code>echo</code> <code>"At least one arguments."</code>

<code>exit</code> <code>1  </code><code>##如果向腳本傳遞的參數小于1,就退出 </code>

<code>fi</code>

<code>##小于1退出,則能繼續執行的為&gt;=1</code>

<code>##判斷使用者是否存在</code>

<code>if</code> <code>id</code> <code>$1 &amp;&gt; </code><code>/dev/null</code><code>; </code><code>then</code>

<code>    </code><code>#條件的執行狀态結果為0,表示為存在</code>

<code>    </code><code>echo</code> <code>"$1 exists."</code>

<code>    </code><code>#存在時,退出,傳回0</code>

<code>    </code><code>exit</code> <code>0</code>

<code>#否則</code>

<code>else</code>

<code>    </code><code>#條件的執行狀态結果不為0,表示為不存在</code>

<code>    </code><code>useradd</code> <code>$1 &amp;&gt; </code><code>/dev/null</code>

<code>    </code><code>#如果添加不成功,顯示使用者名不合法</code>

<code>    </code><code>[ $? -</code><code>eq</code> <code>0 ] || </code><code>echo</code> <code>"User name is not legal"</code> <code>&amp;&amp; </code><code>exit</code> <code>1</code>

<code>    </code><code>#如果執行成功,添加密碼</code>

<code>    </code><code>echo</code> <code>"$1"</code> <code>| </code><code>passwd</code> <code>--stdin $1 &gt; </code><code>/dev/null</code> <code>2&gt;&amp;1</code>

<code>    </code><code>#添加密碼成功時,傳回0</code>

<code>    </code><code>[ $? -</code><code>eq</code> <code>0 ] &amp;&amp; </code><code>exit</code> <code>0</code>

<code>    </code><code>#添加密碼不成功時,傳回1</code>

<code>    </code><code>exit</code> <code>1 </code>

<code>#結束</code>

<code>給予x權限</code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># chmod +x adduser.sh </code>

<code>[root@izpo45bh60h6bsz tmp]</code><code># ls -l adduser.sh</code>

<code>-rwxr-xr-x 1 root root 835 Aug  5 16:37 adduser.sh</code>

<code>執行</code>

<code>.</code><code>/adduser</code><code>.sh user::::::::::::::::::::::::::</code>

<code>User name is not legal</code>

<code></code>

本文轉自 lccnx 51CTO部落格,原文連結:http://blog.51cto.com/sonlich/1953846,如需轉載請自行聯系原作者