shell脚本(语法)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、什么是shell脚本

1.1、shell 的两层含义既是一种应用程序,又是一种程序设计语言

      1.1.1、shell是一种应用程序

        交互式地解释、执行用户输入的命令将用户的操作翻译成机器可以识别的语言完成相应功能称之为 shell 命令解析器。

        shell 是用户和 Linux 内核之间的接口程序

        用户在提示符下输入的命令都由 shell 先解释然后传给 Linux 核心
       它调用了系统核心的大部分功能来执行程序、并以并行的方式协调各个程序的运行
Linux 系统中提供了好几种不同的 shell 命令解释器如 sh、ash、bash 等。一般默认使用 bash 作为默认的解释器。

       1.1.2、shell是一种程序设计语言

         它定义了各种变量和参数并提供了许多在高级语言中才具有的控制结构包括循环和分支 
完成类似于 windows 下批处理操作简化我们对系统的管理与应用程序的部署称之为 shell 脚本

二、shell和我们使用编译性语言如c/c++区别

      1我们学过的 c/c++等语言属于编译性语言编写完成后需要使用编译器完成编译、汇编、链接等过程变为二进制代码方可执行

      2shell 脚本是一种脚本语言我们只需使用任意文本编辑器按照语法编写相应程序增加可执行权限即可在安装 shell 命令解释器的环境下执行

示例讲解

   当我们写完c代码的时候需要使用   gcc  才可以编译成可执行文件  再   ./ 运行文件 

而shell脚本写完代码只需赋一个可执行权限 不需要用 gcc   就可以  ./  运行文件

或者  不用赋权限 直接  bash  代码文件    就可运行  可执行文件

shell 脚本主要用于
          帮助开发人员或系统管理员将复杂而又反复的操作放在一个文件中通过简单的一步执行操作完成相应任务从而解放他们的负担.

三、shell的简单流程

以输入 ls  -l    指令为例

第一步创建xx.sh 文件         如 vim   test.sh   

第二步进入编辑

              定义以开头#!/bin/bash      #!用来声明脚本由什么 shell 解释否则使用默认 shell

                                                              单个"#"号代表注释当前行

              输入需要的指令           如;  ls -l

第三步添加可执行权限     chmod   +x    test.sh

第四步:    ./test.sh

如下图结果

 运行的  结果  和    ls  -l指令显示     一致

3.1、扩展

shell的执行方式有三种

第一种chmod + x test.sh ./test.sh 增加可执行权限后执行      也就是上图的执行方法

第二种bash test.sh                                 直接指定使用 bash 解释 test.sh

第三种. test.sh(source test.sh)                使用当前 shell 读取解释 test.sh

3.2、区别

区别1 第三种与其它的区别

             第一种和第二种执行时会在后台启动一个  新的 shell   去执行脚本

              而第三种是直接执行本次所创建的shell脚本 如上图例子即自己创建的  test.sh

区别2第一种和第二种的区别

             第一种运行时计算机首先检测#!使用#!指定的 shell如果没有使用默认的 shell

比如上图的例子我使用的是  #!/bin/bash   即bash解析器

             而第二种不检测#!直接使用bash解析器

   四、shell的语法

4.1、变量

定义变量
                 变量名=变量值                   如num=10   注意等号两边不可空格且无需变量类型
引用变量
                  $变量名                                          如i=$num 把变量 num 的值付给变量 i
显示变量

      使用 echo 命令可以显示单个变量取值     如 echo $num     把num的值显示到终端

清除变量 

                  使用 unset 命令清除变量             如unset   num   

例子演示使用

输出结果

 4.2、变量的其它用法

read   string
                          从键盘输入一个字符串付给变量 string
readonly var=100
                         定义一个只读变量,只能在定义时初始化,以后不能改变,不能被清除
export var=300
                        使用 export 说明的变量会被导出为环境变量其它 shell 均可使用
 注意此时必须使用 source 2_var.sh 才可以生效

例子演示使用

输出结果

 4.3、错误用法

1、变量名只能包含英文字母下划线不能以数字开头             

     1_num=100                                //  错误
     num_1=200                               //  正确
2、等号两边不能直接接空格符若变量中本身就包含了空格则整个字符串都要用双引号、或单引号括起来双引号内的特殊字符可以保有变量特性但是单引号内的特殊字符则仅为一般字符
     name=aa bb                             //错误有空格
    name="aa bb"                         //正确有空格q且有双引号
    echo "$name is me"               //输出aa bb is me
    echo '$name is me'                //输出$name is me

5、shell的其它变量用法

5.1、预设变量

 $#传给shell脚本参数的数量
 $*传给shell脚本参数的内容    与 $@ 一样
 $1、$2、$3、...、$9运行脚本时传递给其的参数用空格隔开
 $?命令执行后返回的状态
"$?"用于检查上一个命令执行是否正确(在Linux中命令退出状态为0表示正确任何非0值出错)。
 $0当前执行的进程名
 $$当前进程的进程号

编程例子

 运行结果

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: shell