首页 > 代码库 > Linux(五)shell编程基础

Linux(五)shell编程基础

一、Linux shell简介

      1、shell概述        

          Shell 是用户与内核进行交互操作的一种接口,目前最流行的 Shell 称为 bash Shell
          Shell 是一门编程语言<解释型的编程语言>,即 shell 脚本<就是在用 linux 的 shell 命令编程>,
          Shell 是一种脚本语言,那么,就必须有解释器来执行这些脚本。
          Unix/Linux 上常见的 Shell 脚本解释器有 bash、sh、csh、ksh 等,习惯上把它们称作一种 Shell。
          我们常说有多少种 Shell,其实说的是 Shell 脚本解释器, 可以通过 cat /etc/shells 命令查看系 统中安装的 shell,不同的 shell 可能支持的命令语法是不相同的
       2、shell基本格式

           代码写在普通文本文件中,通常以.sh 结尾

           vi helloworld.sh       

           #!/bin/bash                                    ## 表示用哪一种 shell 解析器来解析执行我们的这个脚本程序
           echo "hello world"                            ## 注释也可以写在这里
           保存退出即可
           在这里,我们就写好了一个 shell 脚本, 第一行是固定需要的,表明用哪一种 shell 解析器来 执行我们的这个脚本程序。 本质上, shell 脚本里面的代码都是就是一些流程控制语句加一 些特殊语法再加 shell 命令组成。 其中,我们可以当做每一个命令就是 shell 编程当中的关键 字。
       3、shell执行方式

          (1) sh 方式

              sh helloworld.sh           ## 直接指定用系统默认的 bash shell 解释执行

          (2) source 方式

             source 命令也称为“点命令”,也就是一个点符号( .) ,是 bash 的内部命令。
           功能:使 Shell 读入指定的 Shell 程序文件并依次执行文件中的所有语句  source 命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
           用法:source filename   或者. filename         例:source helloworld.sh  或者. helloworld.sh

             注意:点和脚本之间是有空格的

          (3)直接执行该脚本文件                

             可以有两种方式,不过这两种方式的执行,都需要该文件有执行权限 所以在执行之前,我们要更改他的执行权限
             chmod 755 helloworld.sh

            切换到该文件所在的路径下执行命令:./helloworld.sh  或者helloworld.sh

            直接以绝对路径方式执行:/root/bin/helloworld.sh

二、shell基本语法

      1、系统变量           

         Linux Shell 中的变量分为“系统变量”和“用户自定义变量”
          系统变量可以通过 set 命令查看                       常用系统变量: $PWD $SHELL $USER $HOME

      2、自定义变量

         (1)语法: 

          变量=值 (例如 STR=abc)     等号两侧不能有空格      变量名称一般习惯为大写
          
          使用变量: $STR
          双引号和单引号有区别: 双引号仅将空格脱意, 单引号会将变量引用比如$param 脱意
         (2)示例:
技术分享           

              解释:
              命令: ABC=huang bo,定义变量时中间带有空格,那么一定要带引号,不然会定义不成 功
              命令: ABC=‘huang bo‘, 带了单引号则原样输出。 表示引号中间的值是整体字符串 在引号当中要引用变量的时候,单引号和双引号就有区别啦:
              命令: echo ‘xu zheng $ABC‘ 和 echo "xu zheng $ABC"
              请看区别:
                      如果是单引号,则引号当中的任何东西都当做字符串,即特殊字符会被脱意
                      如果是双引号, 那么$ABC 能打印出变量的值

             那假如命令是这样的: echo "xu zheng $ABCabc",请问还能不能打印出变量 ABC 的值呢? 请看结果:
 技术分享

         (3)变量高级用法         

               撤销变量: unset ABC
               声明静态变量: readonly ABC= ‘abc‘ 特点是这种变量是只读的,不能 unset
               请先看一个例子, 我现在写两个脚本,在 a.sh 中调用 b.sh 执行,那我们想知道 a 脚本能 不能获取到 b 脚本的变量, b 脚本能不能获取到 a 脚本的变量?
              

 

      

 

Linux(五)shell编程基础