Shell 编程

一、概述

     1. shell 是一个命令行解释器,它接受应用程序/用户命令,然后调用操作系统

     2. 也是一门编程语言,解释执行,灵活性好。易调式 

     3. 一般文件.sh 后缀

bdb72455960442b39b0bf9fd927d76ed.png

二、shell入门  - > hello world

        1.  shell 第一行声明 解释器

        2. 编写向控制台打印 hello world 命令

        3. 执行 shell 脚本的三种方法

                (1)sh / bash + 文件的相对路径/绝对路径

bd8df4f0015a41a3b6df5db7448d725a.png

                (2)文件的相对路径 / 绝对路径 (开启一个子shell 进程,必须该文件具有 x 权限)

b11c631d50f24fbbaf976f54a9991658.png

                (3). / source 文件的路径 (在当前bash 环境下 解释脚本)

b28b0abc2d3d4ba38d4a992c00bc45af.png

 三、变量

         1. 系统变量

                (1)常见变量

                        $HOME、$PWD、$SHELL、$USER等

                (2)查看变量

                        1. 查看系统变量

                                echo $HOME

                        2. 查看当前shell所有的变量

                                set

                        3. 查看系统所有的全局变量

                                env | less

                        4. 使用用户自定义变量

                               ls $HOME

    2. 用户自定义变量(一般小写)

         (1)定义普通变量

                     变量名=值

                    该变量名只是局部变量,只能在当前bash访问,对于子shell访问不到    

         (2)将普通变量变为全局变量

                  export  变量名

               全局变量在子shell父shell 都可以访问,但是 子shell对全局变量的修改,不影响父shell。

       (3) 输出变量的值

             echo $变量名

       (4)定义只读变量

              readonly 变量名

        (5)撤销变量

            unset 变量名,不可撤销只读变量

   .特殊变量

        (1)参数占位符  $n 0<= n <=9

                解释:  $0   代表当前脚本名称

$1 到 $9 是参数占位符,可运行时,后面加参数来取代

          (2)参数统计符   $#

                 可代表你输入参数的数量

          (3)获取全部参数符

                   1.   $*    把全部输入的参数当成一个整体

                   2.  $@   把全部输入的参数,分开,相当于放入数组,可以遍历

            (4)$?

                  表示当前执行脚本的状态 0代表成功 

四、运算符

          1.  基本语法

               $((远算符)) 或  $[运算符]

         2.案例 计算 (2+4)*5 / 10 赋予a变量

输出。

          a=$[(2+4)* 5 / 10 ]

         echo $a

      3. 设计一个加数脚本 add.sh

五、条件判断

      1. 基本语法 (0 代表成功 1 代表失败)

          test express  或者 [ express ]

注:中括号要与表达式有个空格,表达式中判断符也要与前后有空格

      2. 字符串 =      !=  来判断是否相等

      3.两个整数判断

d022655eca24493a8448fd0f36115b64.jpg

      4. 判断文件的权限

        ac2db934fbb54f61a3fafdf94a88d7be.jpg

       案例:判断hello 文件是否有可读权限

         [ -r hello ]

    5.  判断文件或目录是否存在

8a9666c5f34f43a4abae3f894763edc1.jpg

     6.  && 和 ||

         &&  代表前面表达式为真,才会执行下一个表达试,若第一个表达式为假,则不会执行第二个表达式

     ||   代表前面的表达式为假,才会执行下一个表达试,若第一个表达式为真,则不会执行第二个表达式

  总结

     等表达式确认是否真假就会直接返回

    7.案例

        1.  判断  22大于11

text 22 -gt 11  或者  [ 22 -gt 11]

       2.  文件是否存在

   [ -e hello  ]

六、流程控制

        1. 单分支

            (1)基本语法

                if 条件表达式;then 程序(DOS)fi

                if 条件表达式

                 then

                 程序(.sh文件)

                fi

             (2)案例,判断hello文件是否存在,若存在则输出OK

                if [ -e hello ] ;then echo OK if

              (3)多条件语法

                 if[ 条件表达式 ] && [ 条件表达式 ];then 程序 fi

                if [ 条件1 -a 条件2 ]; then 程序 fi

               -a 代表and  -o代表or

     2. 多分支

          1. 双分支

             if 条件表达式

            then

          满足then程序

            else

               不满足if程序

           fi

        2.多分支

4a21945e541b49d1a66502a758bb428d.jpg

     3. case语句

 b5882ebd72c94811966ae9e05f68e43f.jpg

13a43f965f094e288455facd0eb4da2a.jpg 

        4. for循环

50e32f2f8cb94fc8aa893fd5cbd13c9c.jpg

 709449f42db04ffcb402089546568172.jpg

       5. while 循环

9b35dd8c60c1421b90a71e9b2ef4657a.jpg

   6. 从控制台获取输入

          read

a0cbf99dcdcf46e8a121f51e28fbabce.jpg

 c972fa3fc8314d56a740264ef60420f5.jpg

 七、函数

      注 在.sh脚本文件中,调用系统函数要用

$(命令)

        1. 系统函数

            1.   basename 

9d67486aaab6445588af6e2df72676eb.jpg

           2. dirname

57d25aed71bc4c919613e169a6338be6.jpg

      2. 自定义函数

 

1a9ac7ab012140d0b987d0720c6eecff.jpg

     3255d9c6c2e046689419c717aded2120.jpg

 

注  用于返回值有限制 (小于等于255) 

,一般把运算出的值,赋予变量,进行运算

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值