在Shell脚本中,往往会遇到一些判断类型为某个值不符合预期值的时候就退出主脚本/当前脚本/当前函数,那么Exitreturn的用法与区别是什么呢?

下面先使用Exit举个简单例子,脚本内容如下

#!/bin/bash
if [[ "$1" == "1" ]];then
  echo "your input is $1"
else
  echo '退出'
  exit 0
fi
echo '最后一句'

第一种执行方法:

  使用Shell解析器进行调用,结果如下

首先是BASH

然后是sh

接着是dash

从上面的反馈结果来看,三个Shell解析器只有BASH能够无报错的执行完成,其他的则会提示语法错误,所以从这点可以看出:

虽然都是Shell解析器,但是他们都有自己的标准,在大体上保持一致,但是某些细节上则会出现差异。

那么下面继续见证另外三种执行方法

第一种:.

第二种:source

第三种:./

从上面所有案例可以得出一个不够严谨的结论(因为当前终端默认解析器就是BASH),所以出现了解析器调用法的时候,只有BASH能完美解析脚本,其他解析器都水土不服。

在后面三种执行方法中,全部都顺利完成解析,但是这并不代表它们都一样,下面开始演示它们的区别(脚本内容增加一段)。

下面的演示需要关注的重点是当前用户,具体请看演示:

脚本内容更新如下:

当前用户如下:

开始演示,下面的演示与之前演示的区别在于第一参数的改变。

第一个,依旧是BASH调用

从反馈结果看,此时用户名变量不变

然后跳过其他Shell解析器调用的测试,直接从.开始

这时候可以看出,使用.的时候,遇到Exit的指令时,该指令会直接应用到当前终端环境,相当于在当前终端执行EXit的指令,接下来继续看其他方式

结果依旧,然后继续使用./的方式

这时候,结果与BASH解析器调用的结果一致,那么从这个结果中我们又可以得出一个结论:

当脚本作为解析器调用文件的时候,此时整个脚本内容产生的效果之后应用于解析器调用的进程里,而不是当前终端环境,当使用source和一个.的方法执行的时候,脚本内容会直接对当前终端生效,而不是某个应用进程。虽然这是一个小小的区别,但却是一个非常实用的功能。

Shell脚本exit用法与区别的更多相关文章

  1. shell脚本基本用法

    下面是一些简单常用的脚本,工作中可能会用到,记录一下. #!/usr/bin/env bash #变量[=两边不要有空格], 在使用的时候需要用${变量名} 或者是$变量名 name="sa ...

  2. php类似shell脚本的用法

    参考: http://www.cnblogs.com/myjavawork/articles/1869205.html php还可以用于类似于shell脚本,哈哈,对编程语言和对整个计算机系统的认识又 ...

  3. shell 脚本 exit 1 报错:numeric argument required问题解决

    原因是在window环境编辑会有特殊字符,解决办法:sed -i'' "s/\r//" file_name

  4. [拾 得] 一枚迷人的贝壳 SHELL / Linux | shell 脚本初步入门

    坚持知识分享,该文章由Alopex编著, 转载请注明源地址: http://www.cnblogs.com/alopex/   索引: 什么是shell shell的分类 shell脚本的执行方式   ...

  5. Linux定时对日志批量打包Shell脚本及定时任务crontab 详细用法

    一.需求背景     因此次项目的生产环境中部署了多套系统,每天会产生大量的日志(数百GB的量),侵占了服务器宝贵的存储资源空间.为了有效缓解服务器存储压力,考虑通过Linux的Shell脚本结合cr ...

  6. Shell脚本字符串匹配及日常命令工具 - 用法总结(技巧指南)

    Shell提供了很多字符串和文件处理的命令,如awk.expr.grep.sed等命令,还有文件的排序.合并和分割等一系列的操作命令.下面重点总结下Shell字符串处理.文本处理以及各类命令及函数用法 ...

  7. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  8. Shell,Bash,等脚本学习(有区别)

    二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.   整数比较   -eq        等于,如:if [ "$a" -eq "$b" ] -n ...

  9. shell脚本中的逻辑判断、文件目录属性判断、if特殊用法、case判断

    7月12日任务 20.5 shell脚本中的逻辑判断20.6 文件目录属性判断20.7 if特殊用法20.8/20.9 case判断 20.5 shell脚本中的逻辑判断 逻辑判断在shell中随处可 ...

随机推荐

  1. Day6-T3

    原题目 某个帝国修了一条非常非常长的城墙来抵御外敌,城墙共分N段,每一段用一个整数来描述坚固程度. 过了几年,城墙年久失修,有很多段都己经损坏,于是皇帝决定派你去修理城墙,但是经费有限. 所以你准备先 ...

  2. HDU1054-Strategic Game

    Strategic Game Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  3. NPOI读取excel 空行

    if (sheet.GetRow(i) != null) 每行判断一下,避免出错.真是蛋疼.

  4. 请求接口得到一段markdowm遇到的问题

    如图,在console里看得到这段数据 有<br>之类的东东,但是我们用部分富文本解析工具可能会显示不了回车,所以我们可以自己动手: 主要就是利用js的replace方法来把<br& ...

  5. python pandas数据分析基础入门2——(数据格式转换、排序、统计、数据透视表)

    //2019.07.18pyhton中pandas数据分析学习——第二部分2.1 数据格式转换1.查看与转换表格某一列的数据格式:(1)查看数据类型:某一列的数据格式:df["列属性名称&q ...

  6. (三)微信小程序配置

    小程序官方文档 全局配置

  7. P1042 字符统计

    P1042 字符统计 转跳点:

  8. 云时代架构阅读笔记二——Java性能优化(二)

    承接上文Java性能优化(一)https://www.cnblogs.com/guo-xu/p/11019267.html 4)尽量确定StringBuffer的容量 在说和这个标题相关之前,先说一下 ...

  9. 十二、Sap的压缩类型p的使用方法

    一.代码如下 二.我们查看输出结果 三.如果位数超出了会怎样呢?我们试试 四.提示如下

  10. 040-PHP使用闭包函数来进行父实例的变量自增,正确示例

    <?php // 如何使用闭包函数来进行父实例的变量自增 function demo(){ $num = 1; # 给use的变量加个&符合,就能改变对应参数的域的限制 $func = ...