zoukankan      html  css  js  c++  java
  • Shell变量、函数

      上篇文章初步认识了一下shell脚本及其简单的案例,下面我们再来讲一下shell的进击部分。

    一.变量

      1.常用系统变量:($HOME、$SHELL、$PWD、$USER)

      2.自定义变量:

        2.1.基本语法

          *定义变量:变量=值

          *撤销变量:unset 变量

          *声明静态变量:readonly 变量

        2.2.变量定义规则:

          *变量名称可以由字母、数字、下划线组成,但是不能以数字开头,环境变量名建议大写;

          *等号两侧不能有空格;

          *在bash中,变量默认类型为字符串类型,无法直接进行数值运算;

          *变量的值如果有空格,需要用双引号或单引号括起来。

        2.3.案例:

          *定义变量 A,并输出

          

           *撤销变量,输出空

          

           *声明静态变量,不能unset,再次赋值报错

          

           *在bash中,变量默认类型为字符串类型,无法直接进行数值运算

          

           *变量的值如果有空格,需要使用双引号或单引号括起来

          

           *把变量提升为全局变量export,(在.sh文件中添加以下图一内容)

              

      3.特殊变量:($n、$#、$* 、$@、$?)

        3.1.$n

          3.1.1.基本语法:

            n为数字,$0代表该脚本名称,$1-$9代表第一到九个参数,十以上的需要用花括号包起来,例:${10}

          3.1.2.案例(输出该脚本文件名称输入参数1和输入参数2 的):   

            *创建.sh文件并写入内容赋予权限[chmod +x ./test.sh](touch test.sh)     

             

            *输出内容

            

          3.2.$#

            3.2.1.基本语法:

            获取所有输入参数个数,常用于循环

          3.2.2.案例(获取输入参数个数)

              

              3.3.$*、$@

          3.3.1.基本语法

             $*:代表命令行中所有参数,把所有参数看做一个整体;

             $@:代表命令行中所有参数,把每个参数区分对待。

          3.3.2.案例(打印输出所有参数):

               

          3.4.$?

          3.4.1.基本语法

            最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行不正确

          3.4.2.案例(判断某脚本是否正确执行)

            

    二.函数

      1.系统函数(basename、dirname):

        1.1.basename(删掉所有的后缀包括最后一个“/”字符,然后将字符串显现出来)

          *案例(截取路径的文件名称)

          

         1.2.dirname(从给定的包含绝对路径文件名中去除文件名,返回剩下的路径)

          *案例(截取文件的绝对路径)

           

       2.自定义函数:

        2.1.注意

          *必须在调用函数地方之前,声明好函数,shell脚本是逐行运行,不会像其他语言一样先编译;

          *函数返回值,只能通过 $? 系统变量获得,可以显示加return返回,如果不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255)

        2.2.案例(计算两个输入参数和)

            

    三.运算符

      1.基本语法:

        *"$((运算式))"或"$[运算式]"

         *expr + , - , * , / , %  加,减,乘,除  (expr运算符之间要有空格)

      2.案例(计算3+2的值):

        

    四.条件判断

      1.基本语法:

      [ condition ]:(前后要有空格,条件非空即为true,反之false)

      2.常用判断条件:

        2.1.两整数之间比较

          = :字符串比较  -lt:小于  -le:小于等于  -eq:等于  -gt:大于  -ge:大于等于  -ne:不等于

        2.2.按照文件权限进行判断

          -r:有读的权限  -w:有写的权限  -x:有执行分权限

        2.3.按照文件类型进行判断

          -f:文件存在并且是一个常规分文件  -e:文件存在  -d:文件存在并是一个目录

       3.案例:

        *23是否大于22  0:true  其他:false

        

         *多条件判断(&&表示前一条命令执行成功时,才执行后一条命令;||表示上一条命令执行失败时,才执行下一条命令)

        

    五.流程控制

      1.if 判断

        1.1.基本语法(中括号与条件之间必须有空格,if后要有空格)

        

         1.2.案例(判断用户输入的信息,如果是1则输出OK,2输出NOTOK,其他的不输出):

          

       2.case 语句

        2.1基本语法(双分号表示命令序列结束,相当于java中的break;最后的 * 表示默认模式,相当于java中的 default)

        

         2.2.案例

          

       3.for 循环

        3.1.基本语法

          

         3.2.案例(从1加到100):

          

      4.while 循环

        4.1基本语法

        

         4.2.案例(从1加到100):

          

       

  • 相关阅读:
    springmvc与ajax交互
    [PAT] A1052 Linked List Sorting
    [PAT] A1032 Sharing
    [PAT] A1076 Forwards on Weibo
    [PAT] A1034 Head of a Gang
    [PAT] A1030 Travel Plan
    [PAT] A1031 Hello World for U
    [PAT] A1029 Median
    [PAT] A1028 List Sorting
    [PAT] A1026 Table Tennis
  • 原文地址:https://www.cnblogs.com/wujialiang/p/14132133.html
Copyright © 2011-2022 走看看