天天看点

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,如需转载请自行联系原作者