最新公告
  • 欢迎您光临波比源码,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • linux学习之shell脚本 ——- 输入与输出

    概述

    顾名思义,通俗来说异常就是指,那些产生在我们本来斟酌和设定的计划以外的意外情况。

    生活中总是会存在各种突发情况,如果没有做好准备,就让人措手不及。

    你和朋友约好了明天1起去登山,半道上忽然乌云蔽日,下起了磅礴大雨。这就是所谓的异常情况。

    你1下子傻眼了,然后看见朋友淡定的从背包里取出1件雨衣穿上,淫笑着看着你。这就是对异常的处理。

     

    对1个OO程序猿来说,所做的工作就是:将需要处理的现实生活中的复杂问题,抽象出来编写成为程序。

    既然现实生活中总是存在着各种突然的异常情况,那末对应其抽象出的代码,自然也是存在这样的风险的。

    所以常常说:要编写1个完善的程序其实不只是简简单单的把功能实现,还要让程序具有处理在运行中可能出现的各种意外情况的能力。

    这就是所谓的异常的使用。

     

    体系

    这就是Java当中异常体系的结构构成,从图中我们可以提取到的信息就是:

    1、Java中定义的所有异常类都是内置类Throwable的子类。

     

    2、Java中的异常通常被分为两大类:Error和Exception:

    • 那末顾名思义,Error代表毛病,Exception代表异常;
    • Error用以指明与运行环境相干的毛病,JVM没法从此类毛病中恢复,此类异常无需我们处理;
    • Exception代表着可以被我们所处理的异常情况,我们需要掌握和使用的,正是该类型。

    3、Exception最多见的两种异常类型分别是:

    • IOException:主要是用以处理操作数据流时可能会出现的各种异常情况。
    • RuntimeException:指产生在程序运行时期的异常,如数组越界,入参不满足规范等情况引发的程序异常

     

    工欲善其事,必先利其器

    要理解Java中的异常使用,首先要明白几个关于异常处理的工具 – 异常处理关键字的使用。

    1、throw:用以在方法内部抛出指定类型的异常。

    void test(){ if(产生异常的条件){ thorw new Exception("抛出异常"); } }

    2、throws:用以声明 1个方法可能产生的异常(通常都是编译时检测异常)有哪些。

    void test() throws 异常1,异常2{ //这个方法可能产生异常1,异常2 throw new 异常1(); throw new 异常2();  }

    3、try – catch:另外一种处理异常的方式,与throws不同的是,这类方式是指 "捕获并处理"的方式。

    用try语句块包括可能产生异常的代码,catch用于捕获产生的异常,并在catch语句块中定义对捕获到的异常的处理方式。

    try { //可能产生异常的代码 } catch (要捕获的异常类型 e) { //对捕获到的异常的处理方式 }

    4、finally语句块:通常都是跟在try或try-catch以后进行使用,与其名字代表的1样。也就是定义终究的操作。

    特点是被try语句块包括的内容中,是不是真的产生了异常。程序终究都将履行finally语句块当中的内容。

    通经常使用于对资源的释放操作,例如:通过JDBC连接数据库等情况。

    try { //获得资源 } catch (要捕获的异常类型 e) { //对捕获到的异常的处理方式 }finally{ //释放资源 }

    趣解异常的实际使用

     

    了解Java中异常类的实际利用之前,应当先了解两个概念,用以对最经常使用的异常做1个分类:

     

    1、编译时被检测异常:

       只要是Exception和其子类都是,除特殊子类RuntimeException体系。

       所谓的编译时被检测异常也就是指在程序的编译器就会进行检测的异常分类。

     

       也就是说,如果1个方法抛出了1个编译时检测异常,Java则要求我们必须进行处理。

       既:通过throws对异常进行声明处理 或是 通过try-catch对异常进行捕获处理。

       如果程序编译时检测到该类异常没有被进行任何处理,那末编译器则会报出1个编译毛病。

    public class Test{ public static void main(String[] args) { try { Class clazz = Class.forName("Java"); System.out.println(clazz.getName()); } catch (ClassNotFoundException e) { System.out.println("没有找到该类"); } } }

    上面代码中的ClassNotFoundException就是1种编译时检测异常,这个异常是由Class类当中的forName方法所抛出并声明的。

    如果我们在使用该方法时没有对异常进行处理:声明或捕获,那末该程序就会编译失败。

     

    通过这个例子想要说明的是:编译时被检测异常通常都是指那些“可以被我们预感”的异常情况。

    正例如:我们通过Class.forName是想要获得指定类的字节码文件对象,所以我们自然也能够预感可能会存在:

    与我们传入的类名参数所对应的类字节码文件对象不存在,查找不到的情况。

    既然这类意外情况是可以被预感的,那自然就应当针对其制定1些应对方案。

     

     

    项目建设完成以后的结构:

    前面介绍了Shell脚本的基础和运算符等,今天再来看1下关于Shell脚本的输入与输出。

    项目建设完成以后的结构:

      echo

    项目建设完成以后的结构:

      cat

    项目建设完成以后的结构:

      tee

    项目建设完成以后的结构:

    Shell输入与输出的1些概念:

    项目建设完成以后的结构:

      标准输入、输出和毛病

    项目建设完成以后的结构:

      使用文件描写符

     

    项目建设完成以后的结构:

    输入输出命令的用法:

    项目建设完成以后的结构:

      该命令的作用是可以显示文本行或变量,或把字条串输入到文件.

    项目建设完成以后的结构:

       echo [option] string

    项目建设完成以后的结构:

       - -n 回车不换行,linux系统默许回车换行

    项目建设完成以后的结构:

      例子:

    项目建设完成以后的结构:

    #!/bin/bash #echotest echo -e "we aref testing echo command " echo -n "we are testing echo command" echo "OK" echo echo "we are testing echo command " echo "output this string to file">echo_output.txt 项目建设完成以后的结构:

    jesson@jesson-HP:~/develop/workspace/shell_workspace$ chmod a+rx echotest.sh jesson@jesson-HP:~/develop/workspace/shell_workspace$ ./echotest.sh we are testing echo command we are testing echo commandOK we are testing echo command 项目建设完成以后的结构:

      2. read

    项目建设完成以后的结构:

      用法:

    项目建设完成以后的结构:

       - 如果只指定1个变量,那末read将会把所有的输入赋给该变量,直至遇到第1个文件结束符或回车;如果给出了多个变量,它们按顺序分别被赋予不同的变量。shell将用空格作为变量之间的分隔符。

    项目建设完成以后的结构:

    readtest.sh

     

    项目建设完成以后的结构:

      给予权限,履行脚本:

     

     

    项目建设完成以后的结构:

      3. cat

    项目建设完成以后的结构:

      用法:

    项目建设完成以后的结构:

      例子:   

    项目建设完成以后的结构:

      注意,cat命令是将输入的所有内容显示出来,如果需要分页显示,则可借助于管道|和more或less命令来实现。

     

     

    项目建设完成以后的结构:

      可以通过管道把1个命令的输出传递给另外一个命令作为输入。

    项目建设完成以后的结构:

       格式:command1 | command2

    项目建设完成以后的结构:

    jesson@jesson-HP:~/develop/workspace/shell_workspace$ ls -l 总用量 32 -rw-rw-r– 1 jesson jesson 25 1月 22 20:16 cattest.sh -rw-rw-r– 1 jesson jesson 27 1月 22 19:50 echo_output.txt -rwxrwxr-x 1 jesson jesson 209 1月 22 19:50 echotest.sh -rwxrw-r– 1 jesson jesson 94 1月 15 21:20 helloworld.sh -rwxrw-r– 1 jesson jesson 637 1月 17 17:07 parm.sh -rwxrwxr-x 1 jesson jesson 299 1月 22 20:10 readtest.sh -rwxr-xr-x 1 jesson jesson 47 1月 17 15:21 searchfile.sh -rw-rw-r– 1 jesson jesson 141 1月 22 20:18 shelltest.bak jesson@jesson-HP:~/develop/workspace/shell_workspace$ ls -l | grep parm.sh -rwxrw-r– 1 jesson jesson 637 1月 17 17:07 parm.sh jesson@jesson-HP:~/develop/workspace/shell_workspace$ df -k df: "/root/.gvfs": 权限不够 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda9 29525076 12915484 15109792 47% / udev 2031604 4 2031600 1% /dev tmpfs 816612 860 815752 1% /run none 5120 0 5120 0% /run/lock none 2041528 792 2040736 1% /run/shm /dev/sda10 49135432 28230216 18409268 61% /home /dev/sda1 73400952 43260784 30140168 59% /media/00006A15000514EC /dev/sda5 138424040 123913684 14510356 90% /media/00010A370001FCE2 /dev/sda6 56504040 44425044 12078996 79% /media/000E2D72000188C0 /dev/sda7 138134868 32924076 105210792 24% /media/0008EEFF00004113 jesson@jesson-HP:~/develop/workspace/shell_workspace$ df -k | awk '{print $1}' df: "/root/.gvfs": 权限不够 文件系统 /dev/sda9 udev tmpfs none none /dev/sda10 /dev/sda1 /dev/sda5 /dev/sda6 /dev/sda7 jesson@jesson-HP:~/develop/workspace/shell_workspace$ df -k | awk '{print $1}' | grep -v "文件系统" df: "/root/.gvfs": 权限不够 /dev/sda9 udev tmpfs none none /dev/sda10 /dev/sda1 /dev/sda5 /dev/sda6 /dev/sda7 jesson@jesson-HP:~/develop/workspace/shell_workspace$ df -k | awk '{print $1}' | grep -v "文件系统"|grep dev df: "/root/.gvfs": 权限不够 /dev/sda9 udev /dev/sda10 /dev/sda1 /dev/sda5 /dev/sda6 /dev/sda7

    项目建设完成以后的结构:

      5. tee

    项目建设完成以后的结构:

      用法:

    项目建设完成以后的结构:

       - 如果希望在看到输出的同时,也将其存入1个文件,那末,这个命令就最适合,-a,表示追加的意思。

    项目建设完成以后的结构:

      例子:

     

    项目建设完成以后的结构:

      5. exec

    项目建设完成以后的结构:

      用法:

    项目建设完成以后的结构:

       -其中的command通常是1个shell脚本

    项目建设完成以后的结构:

    输入输出的基本概念:

    项目建设完成以后的结构:

      在shell中履行命令时,每一个进程都和3个打开的文件相联系,并使用文件描写符来援用这些文件,由于文件描写符不容易记,shell同时也给出了相应的文件名。

     

    项目建设完成以后的结构:

    文件描写符

    项目建设完成以后的结构:

    0(缺省是屏幕,也能够是文件)

    项目建设完成以后的结构:

    1(缺省是键盘,也能够是文件或其他命令的输出)

    项目建设完成以后的结构:

    2(<span sty

    波比源码 – 精品源码模版分享 | www.bobi11.com
    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

    波比源码 » linux学习之shell脚本 ——- 输入与输出

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    波比源码
    一个高级程序员模板开发平台
    升级波友尊享更多特权立即升级