上篇文章初步认识了一下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):

      

   

Shell变量、函数的更多相关文章

  1. linux shell自定义函数(定义、返回值、变量作用域)介绍

    http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell ...

  2. linux shell 自定义函数(定义、返回值、变量作用域)介绍

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...

  3. 转 linux shell自定义函数(定义、返回值、变量作用域)介绍

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...

  4. shell变量、函数和数组以及字符串的截取

    一.变量 1.shell变量名 (1)可以由字母.数字.下划线等字符组成.但是第一个字符必须是字母或者下划线. (2)若果变量中包含下划线(_)则要特别注意,$project_svn_$date.ta ...

  5. Linux操作系统shell与函数详解

    shell和函数的定义 1. linux  shell 函数 将一组命令集或语句形成一个可用的块, 这些语句块称为函数. 2. shell  函数的组成 函数名:函数名字,注意一个脚本中函数名要唯一, ...

  6. shell之函数

    function 所有函数在使用前必须定义.这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用.调用函数仅使用其函数名即可.可以将函数看作是脚本中的一段代码,但是有一个主 ...

  7. 《Linux shell变量总结回顾》RHEL6(转)

    文章版权:http://www.cnblogs.com/linux-super-meng/ 环境变量路径: [root@localhost ~]# set   //查看到的是局部变量和全局变量2种 [ ...

  8. $ cd `dirname $0` 和PWD%/* shell变量的一些特殊用法

    在命令行状态下单纯执行 $ cd `dirname $0` 是毫无意义的.因为他返回当前路径的".". $0:当前Shell程序的文件名dirname $0,获取当前Shell程序 ...

  9. shell变量数学运算

    shell变量数学运算 #!/bin/sh # 本脚本说明shell脚本中变量运算的用法 # 错误的用法var=1var=$var+1echo $var 输出:1+1 # 第一种用法,letvar=1 ...

  10. Linux shell 自定义函数

    一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带functi ...

随机推荐

  1. 应用程序-特定 权限设置并未向在应用程序容器不可用 SID (不可用)中运行的地址 LocalHost (使用 LRPC) 中的用户...的 COM 服务器应用程序的 本地 激活 权限。此安全权限可以使用组件服务管理工具进行修改。

    很久以前发现我们的业务服务器上出现一个System的系统严重错误,查找很久都没有找到解决办法,今日再次查看服务器发现报错更频繁,于是就搜集各种资料进行查找解决办法,终于找到了一个解决办法. 错误截图介 ...

  2. 博客新域名www.tecchen.tech

    新年祝福 祝新的一年,大朋友实现所有梦想,小朋友健康成长- 新域名 https://www.tecchen.tech 有效期:10年 旧链接 之前的链接请自行替换为新链接地址,包括但不限于以下二级域名 ...

  3. java学生简单管理系统

    1 //设一个班有n名学生,期末考试5门,编写程序评定学生奖学金 2 514 //要求打印输出一二等奖学金学生的学号,姓名和各科成绩 3 515 //总成绩超过全班总平均成绩20%一等奖学金,超过总平 ...

  4. Java多线程中的wait/notify通信模式

    前言 最近在看一些JUC下的源码,更加意识到想要学好Java多线程,基础是关键,比如想要学好ReentranLock源码,就得掌握好AQS源码,而AQS源码中又有很多Java多线程经典的一些应用:再比 ...

  5. 2020.11最新JAVA环境安装配置

    Windows10下java环境配置 更新:2020年11月25日 电脑环境: windows10 64位 一.下载jdk 首先到Oracle网站下载对应操作系统的jdk安装包. https://ww ...

  6. kali查看本机ip

  7. 浅尝 Elastic Stack (五) Logstash + Beats + Kafka

    在 Elasticsearch.Kibana.Beats 安装 中讲到推荐架构: 本文基于 Logstash + Beats 读取 Spring Boot 日志 将其改为上述架构 如果没有安装 Kaf ...

  8. 20200315_python3.6去除标点符号

    line = "python3.6下进行去!@#$%^&*()除标点测试,:!大家好,:!&>啥都不是!@#¥%--&*(-.||" # python ...

  9. NodeJS+formidable实现文件上传加自动重命名

    前述 本人node初学者,此前使用原生node实现文件上传时遇到了一些困难,只做到了.txt 和.png两中格式的文件可以正常上传,如果上传其他格式文件服务端保存的文件会无法正常打开,原因是对form ...

  10. Spring框架之AOP源码完全解析

    Spring框架之AOP源码完全解析 Spring可以说是Java企业开发里最重要的技术.Spring两大核心IOC(Inversion of Control控制反转)和AOP(Aspect Orie ...