Linux Shell脚本系列之二

作者: 鐘濤 | 来源:发表于2017-07-30 00:37 被阅读20次
    • shell是干嘛用的?
      shell是一脚本语言,没有编译过程,不像Java等其他编程语言一样复杂,它面向的对象应该是服务器,为了运维人员方便管理服务器而去实现某些操作。而不是说用shell去写一个app,它没这个能耐。

    shell变量

    • 变量是任何一门编程语言不可少的组成部分,它用于存储数据。
    • 通常脚本语言不需要声明变量的类型,直接赋值就可以了。
    • 而在Bash中,变量的默认赋值都是一个字符串,无论你赋值的时候有没有加上引号,它都是当作字符串去存储。
    • 变量名不能以数字开头,可以由数字字母下划线组成。
    变量的分类
    • 用户自定义的变量
      变量名=变量值(给变量赋值时,不要有空格,不然系统会一个你是在输入命名,所以会报命令找不到的错误)
      $变量名或${变量名}:调用变量值
      set:查看当前已定义的变量
      set -u:可以知道调用变量值时可以知道该变量是为空还是未定义
      unset:用于删除变量
      sum=$var+$x按道理应该输出10,结果输出的是5+5,这是因为变量赋值都当作是字符串,所以下面才有sum=$var$x输出55
    举个栗子1
    • 系统环境变量:主要保存和系统操作环境相关的数据,可自定义,但真正对系统生效的变量和作用是固定的。
      环境变量和用户自定义变量的区别,环境变量是全局变量,用户自定义变量是局部变量
      定义环境变量:
      export 变量名=变量值 (声明并赋值)
      变量名=变量值
      export 变量名 (先赋值后声明)
      env:只查看环境变量用命令
      $PATH:系统查找命令的路径
      其实我们平时使用的命令,按道理都是需要打路径下的可执行文件去执行的,但我们都不会这样去使用。
      比如说ls命令,按道理应该是/bin/ls可是我们只是使用ls就成功运行了该文件,为什么呢?
      这是因为环境变量$PATH的作用,当我们打出ls时,它会在$PATH里头存储的路径下去找对应的可执行文件
      那么按照这个思路,我们可以把存放自己写的脚本那个文件目录放到$PATH里头,那么我们就可以很轻松的去调用了
    举个栗子2
    locale:查询当前系统的语系
    LANG:定义系统主语系的变量,修改该值只是临时生效
    /etc/sysconfig/i18n:修改这个文件重启服务器后永久生效
    • 预定义变量:变量名和该变量对于的作用都是固定的,不可自定义,位置参数变量也是预定义变量的一种
      1.位置参数变量
      $n:n为数字,$0代表命令本身,$1-$9代表1到9的参数列表,大于或等于10的用用花括号包起来{$10}
      $*:代表命令行中的所有参数,把所有参数看作一个整体
      $@:代表命令行中的所有参数,把每个参数区分看待
      $#:代表命令行中的所有参数个数
    利用位置参数变量写一个求和脚本
    求和可以使用let命令,如let sum=var1+var2
    也可以使用(()),如sum=$((var1+var2)) 或 $(($var1+$var2))
    使用操作符[]也可以这样sum=$[$var1+var2]
    $*$@的区别
    $*被扩展为$1c$2c$3等,其中c为IFS的第一个字符
    $@被扩展为$1 $2 $3 举个栗子4
    $*看成一个整体,所以只循环了一次。$@把每个参数区分看待,所以循环了4次
    2.预定义变量
    $?:最后一次执行命令的返回状态,0为正确执行,非0为错误执行
    $$:当前进程的进程号 (PID)
    $!:后台运行的最后一个进程的进程号
    read变量:接收键盘输入
    • -p:提示信息,等待输入时的提示信息
    • -t:指导等待输入时间
    • -n:指定接收的字符长度
    • -s:隐藏输入内容,适用于密码输入之类,比如我们输入登录密码,输入时你是看不到你输入了什么
    举个栗子5

    相关文章

      网友评论

        本文标题:Linux Shell脚本系列之二

        本文链接:https://www.haomeiwen.com/subject/ahiclxtx.html