当前位置: 首页 > news >正文

linux shell脚本 基础认识

Linux 系统中的 Shell 是一个特殊的应用程序,它介于操作系统内核与用户之间,充当 了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

什么是shell脚本

      就是将命令按顺序一一列出,最后自动执行,执行需要权限,也可以直接使用路径,脚本其实并不复杂,通用脚本环境改变后依然可以使用脚本

脚本的构成

        1.脚本声明(解释器):第一行开头"#!/bin/bash",表示此行以下的代码语句是通过/bin/bash程序来解释执行。#!/bin/bash是默认的解释器还有其他类型的解释器,#!/bin/python    #!/bin/expert等

        2.注释信息:以#开头的语句表示为注释信息        #注释

        3.可执行语句:比如echo命令用于输出" "之间的字符串

脚本执行逻辑

        1.顺序执行:程序按照自上而下顺序执行

        2.选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行

        3.循环执行:程序执行过程中需要重复执行多次某段语句

执行脚本方式

        1.按照指定路径执行文件(需要有执行权限)

        2.指定shell解释器去执行(不需要权限) bash 脚本名

        3.使用source和 . 执行(不需要权限)       

         推荐使指定路径和解释器去执行脚本,会开启子进程去执行脚本,不会影响当前操作,source和 . 不会开启子进程,会影响当前进程

脚本错误

       1.命令错误:命令出错不会影响接下来的命令继续

       2.语法错误:会影响接下来的命令继续执行

       3.逻辑错误:只能自己筛查

 代码检查

        1.bash -n   检查语法错误     将脚本的所有语句执行一遍

        2.bash -x    逻辑错误      检查语法错误

          set -e  写在脚本前面,出错立即停止

  变量基础

          定义变量: 变量名=变量值       

          调整变量:echo $变量名

          取消变量:unset 变量名

          追加变量: 变量名+=追加的内容

          export  变量     可以让子进程也可以使用变量

     变量命名要求

           1.区分大小写

           2.不能使用数值开头

      特殊符号

            1.双引号" " 可以识别变量

            2.单引号 ' '  不能识别变量

            3.反撇 ` ` 调用命令的执行结果     等价于 $()

            4. { }  定义变量名的范围

       read -p   从键盘输入的内容变成变量

       变量的作用范围

              默认情况下,新定义的变量只能在当前的shell环境有效,因此称为局部变量,当子程序或新的shell环境中,局部变量将无法再起作用

              可以通过内部命令export将指定的变量变为全局变量,使用户定义的变量所在的子shell环境中可以继续使用

               export 变量名

     整数运算           

        运算符:+   -   \*   /  %(取余)

        expr 算术表达式

        let   变量名=变量1 运算符 变量2   ...

        echo $变量名

        变量名=$[算术表达式]

        echo $变量名

      (变量名=算术表达式)

        echo $变量名

        echo $[RANDOM] 取随机数 范围是0-32767 

        echo $[RANDOM%33] 取0-32的随机数

        echo $[RANDOM%33+1] 取1-33的随机数

特殊变量

        预定义变量

               $*      返回所有的位置参数,所有参数当作一个整体返回

               $@    返回所有的位置参数,所有参数当作个体返回

               $?      表示前一条命令执行的返回状态,返回值为0表示正确,返回任何非0值均表示出现异常

               $#      表示命令行中位置参数的总个数

               $0       表示当前执行的脚本或程序的名称

               $$        当前bash的进程id

               $!        后台任务最后一个id

        环境变量

                env 看到所有的环境变量

                 $USER 表示用户名称

                 $HOME 表示用户的家目录

                 $LANG  表示语言和字符集

                 $PWD    表示当前所在工作目录

                 $PATH    表示可执行用户程序的默认路径

           位置变量

                 位置变量也称为位置参数,使用$1 $2 $3....$9 表示  $0表示当前脚本的名称

                        

http://www.lryc.cn/news/286320.html

相关文章:

  • 一文(10图)了解Cornerstone3D核心概念(万字总结附导图)
  • 牛客网-----跳石头
  • 用ChatGPT教学、科研!大学与OpenAI合作
  • 运维平台介绍:视频智能运维平台的视频质量诊断分析和告警中心
  • GAMES104-现代游戏引擎:从入门到实践 - 物理引擎课程笔记汇总
  • 【linux】Xorg的工作原理
  • 02-docker下部署seata
  • 回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测
  • 精益生产咨询背后的秘密:企业如何实现价值最大化
  • 创建SERVLET
  • python算法与数据结构(搜索算法和拓扑排序算法)---深度优先搜索
  • thinkphp5实战之phpstudy v8环境搭建,解决Not Found找不到路径问题
  • fastjson-BCEL不出网打法原理分析
  • 部署mysql主从同步,部署mysql数据读写分离结构+mycat2
  • 【最新!超详细C++入门】
  • 【Linux】【实战系列】10 分钟掌握日常开发中 Linux 网络处理相关命令
  • 语义分割常用评价指标
  • 从0开始学习C++ 第一课:你的第一个C++程序
  • Dubbo-admin监控中心
  • 216. 组合总和 III - 力扣(LeetCode)
  • LeetCode-题目整理【5】:O(1) 时间插入、删除和获取随机元素
  • 服务器感染了.wis[[Rast@airmail.cc]].wis勒索病毒,如何确保数据文件完整恢复?
  • ContentNegotiationManagerFactoryBean 内容协商
  • html css js 开发一个猜数字游戏
  • HDD 东山再起,单块 30TB 起步新品想要颠覆储存行业
  • 【网络安全】-基本工具msf
  • Vue3的ref和reactive
  • Flink编程——风险欺诈检测
  • Day37 贪心算法 part06 738. 单调递增的数字 968. 监控二叉树
  • SpringBoot Redis入门(四)——Redis单机、哨兵、集群模式