开发者

shell编程规范与变量详解

目录
  • shell脚本概述
    • shell作用
    • 编写第一个shell脚本
    • 重定向与管道操作
      • 重定向操作
      • 重定向输出
      • 重定向输入
      • 错误重定向
    • 管道操作
    • shell变量作用,类型
      • 自定义变量
        • 定义新变量
        • 查看引用变量值
        • 变量赋值特殊操作
        • 设置变量作用范围
        • 数值变量运算
      • 特殊shell设置
        • 环境变量
        • 只读变量
        • 位置变量
        • 预定义变量
    • 总结

      shell脚本概述

      shell可以批量处理,自动化完成一系列维护任务,避免大量重复性输入,交互操作等。

      shell作用

      shell是一个特殊的应用程序(在linux中),介于操作系统内核与用户之间,担任’命令解释器‘的角色,主要负责用户输入命令(解释),将需进行的操作传递给内核(输出结果)。

      shell解释器有很多种,使用不同的shell时,其内部的指令,特殊符号会有区别。

      shell编程规范与变量详解

      编写第一个shell脚本

      bash是目前使用最多(linux默认)的shell。shell脚本将要执行的命令放入一个脚本中,赋予其权限即可。

      执行vim aaa.sh构建并编辑脚本

      shell编程规范与变量详解

      如要执行./aaa.sh需赋予权限。(bash ,source则无需)

      shell编程规范与变量详解

      执行脚本

      shell编程规范与变量详解

      重定向与管道操作

      shell脚本具有批量处理的特性,大部分指令都是默认进行,因此提取,过滤执行信息非常重要。

      重定向操作

      linux系统使用文件来描述硬件设备等资源(硬板,分区等设备文件),用户提供操作系统处理的信息过程中,主要包括3类交互设备文件。

      默认设备文件编号
      标准输入键盘0命令将从标准输入文件中读取在执行过程中需要输入的数据。
      标准输出显示器1命令将执行后的输出结果发送到输出文件
      标准错误显示器2命令将执行时的各种错误信息发送到标准错误文件

      重定向输出

      是指将命令的正常输出结果保存到指定文件中(不显示在显示的屏幕上)(>/>>用于覆盖和追加文件)。

      shell编程规范与变量详解

      shell编程规范与变量详解

      重定向输入

      指将命令在接android收接受的途径由默认改成指定文件,不等待从键盘输入。

      交互式操作过程可以通过重定向输入以读取文件的方式来完成。

      执行

      shell编程规范与变量详解

      添加初始密码串“123456”

      shell编程规范与变量详解

      非交互式命令语句可以更方便的在Shell脚本中使用,从而大大减少程序被打断的过程,提高脚本执行的效率。

      错误重定向

      将执行命令时的错误信息保存到指定文件上而不是屏幕上。

      shell编程规范与变量详解

      管道操作

      管道操作为不同命令之间提供了一种机制。位于|左侧命令作为输出结果,将右侧命令作为输入(处理对象),一行命令可以有多个|符。

      shell编程规范与变量详解

      shell编程规范与变量详解

      shell变量作用,类型

      shell变量用来存放系统和用户需要使用的特定参数,这些参数可以根据用户的设定或系统变化而相应变化,shell程序能够提供更加灵活功能,适应性更强。

      自定义变量

      自定义变量是由系统用户自己定义的变量,只在用户自己的Shell环境中有效,因此又称为本地变量。

      定义新变量

      bash中变量相对简单没有那么复杂,在定义一个新变量时,一般无需提前声明,直接指定变量名称给初始值即可(内容)。

      shell编程规范与变量详解

      查看引用变量值

      在变量前加$可以引用一个变量值,使用echo查看变量,一条命令可以使用echo查看多个变量值。

      shell编程规范与变量详解

      当变量名称和紧跟其他的其他字符混淆时,使用{}将其隔开,否则将无法确定正确的变量名称。

      shell编程规范与变量详解

      变量赋值特殊操作

      双引号(")

      双引号起界定字符串的作用,特别是当赋值内容包括空格时,必须用"括起来,其他情况下"可以省略。

      shell编程规范与变量详解

      在"范围内使用$可以引用其他变量值(变量引用),从而能够直接调用现有变量的值给新的变量。

      shell编程规范与变量详解

      单引号(‘)

      当赋值包括/$等特殊符号时,应用单引号括起来。在单引号范围内任何字符都将被当作普通字符看待,而且无法引用其他变量的值。

      shell编程规范与变量详解

      反撇号(`)

      主要用于命令替换,允许将执行某个命令的屏幕输出结果赋值给变量。`号内必须是可以执行的命令,不然将会出错。

      shell编程规范与变量详解

      使用反撇号难以在一行命令中实现嵌套命令替换操作,这时可以己使用"$()"来代替`号操作,以解决嵌套的问题。

      shell编程规范与变量详解

      read命令

      bash内置命令android可以使用read来变量赋值。read命令用来提示用户输入信息,从而实现简单的交互过程。

      [root@localhost~]# read ToDir1
      /opt/backup/
      [root@localhost ~]# echo $ToDir1
      /opt/backup/

      以便使交互式操作界面更加友好,提高易用性,read命令可以结合"-p'选项来设置提示信息,以便告知用户应该输入什么内容等相关事项。

      [root@localhost~]#read-p"请指定备份存放目录:"ToDir22
      请指定备份存放目录:/opt/backup
      [root@localhost ~]#_echo $ToDir2
      /opt/backup

      设置变量作用范围

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

      shell编程规范与变量详解

      为了使用户定义的变量在所有android的子Shell环境中能够继续使用,减少重复设置工作,可以通过内部,命令export将指定的变量导出为全局变量。

      shell编程规范与变量详解

      使用export导出全局变量的同时,也可以为变量进行赋值,这样在新定义全局变量时就不需要提前进行赋值了。

      shell编程规范与变量详解

      数值变量运算

      Shell变量的数值运算多用于脚本程序的过程控制。

      • +加法运算。
      • -:减法运算。
      • \*:乘法运算,注意不能仅使用"*"符号,否则将被当成文文件通配符
      • /:除法运算。
      • %:求模运算,又称为取余运算,用来计算数值相除后的余数。

      shell编程规范与变量详解

      若要将运算结果赋值给其他变量,可以结合命令替换操作(使用反撇号)。

      shell编程规范与变量详解

      特殊shell设置

      除了用户自行定义的Shell变量以外,在Linux系统和Bash Shell环境中还有一系列的特殊变量:环境变量,只读变量,位置变量,预定义变量。

      环境变量

      环境变量指的是出于运行需要而由Linux系统提前创建的一类变量,主要用于设置用户的工作环境,,包括用户宿主目录,命令查找路径,用户当前目录,登录终端等。

      shell编程规范与变量详解

      PATH变量用于设置可执行程序的默认搜索路径,当仅指定文件名称来执行命令程序时,Linux系统

      将在PATH变量指定的目录范围查找对应的可执行文件,如果找不到则会提示"command not found"

      [root@localhost ~]# ls -lh /root/first.sh
      -rwxr-xr-x. 1 root root 27 Jul 4 09:24 /root/first.sh
      [root@localhost ~]# echo $PATH 
      /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bi
      n:/root/bin
      [root@localhost ~]#first.sh
      -bash: first.sh: command not found
      [root@localhost ~]#_PATH="$PATH:/root" 
      [root@localhost ~]# echo $PATH 
      /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/birh:/root/bin:/usr/local/mysql/bi
      n:/root/bin:/root
      [root@localhost~]#first.sh//直接以文件名运行脚本
      当前的目录位于:
      /boot
      其中以vml开头的文件包括:-rwxr-xr-x.1root5.2M Apr 12 13:20
      vmlinuz-0-rescue-b15df1eb8205483f9f70c779709810abc
      -rwxr-xr-x. 1 root root 5.2M Nov 22 2016 vmlinuz-3.10.0-514.el7.x86_64

      只读变量

      Shell变量中有一种特殊情况,一经设定,其值是不可改变的,这种变量被称为只读变量。

      shell编程规范与变量详解

      位置变量

      为了在使用Shell脚本程序时,方便通过命令行,为程序提供操作参数,Bjavascriptash引入了位置变量的概念。

      执行vpythonim adder2num.sh

      shell编程规范与变量详解

      [root@localhost ~]# ./adder2num.sh 12 34
      12 + 34=46
      
      [root@localhost ~]# ./adder2num.sh 56 78
      56 + 78 =134

      预定义变量

      预定义变量是由Bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不能创建新的预定义变量。

      • $#:表示命令行中位置参数的个数。
      • $*:表示所有位置参数的内容。
      • $?:表示前一条命令执行后的返回状态,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。
      • $0:表示当前执行的脚本或程序的名称。

      shell编程规范与变量详解

      shell编程规范与变量详解

      shell编程规范与变量详解

      shell编程规范与变量详解

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新运维

      运维排行榜