在带你了解企业是如何编写脚本的-第一篇:认识脚本这篇文章中,我对脚本进行了一些基本的讲解,那么今天我们就来了解一下Shell脚本有哪些规范(约定俗成)。

俗话说无规矩不成方圆,想要长远的发展就需要制定一定的规范,不能乱来,下面开始讲解一些比较基本的Shell基础。

1、Shell解析器

Shell语言和其他语言都一样需要对应的解析器才能起作用,而不同的解析器对脚本的语法又有一些细微的差别,下面就了解一下目前常用的解析器:

  • BASH
  • DASH
  • SH
  • KSH
  • CSH
  • RBASH

一般Linux系统会内置几个解析器,然后有一个设置为默认解析器,那么这些所谓的解析器作用是什么?又该如何获取这些信息呢?

1.1、如何查看当前有哪些Shell

cat /etc/shells #查看当前系统支持的Shell

执行结果:

查看当前系统Shell列表

如果想使用其他Shell也可以通过安装命令去安装它,例如:

sudo apt install zsh #安装zsh

安装zsh

安装完成

安装完成之后,我们再次查看系统的Shell列表,可以看到,此时已经出现了刚才安装的ZSH。

1.2、如何知道当前默认Shell

系统默认Shell会通过一个系统变量去存储,所以只需要执行下面的命令即可获取当前的默认Shell

echo $SHELL

查看默认Shell

那么有了这些东西有啥用呢?

1.3、Shell解析器的作用

了解过Python的人可能知道,Python也有不同的解析器,而不同的解析器运行的效果也是不一样的,具体在这里就不对Python深入了,只需要知道,Shell解析器有以下作用和特点:

  • 介于系统内核和终端之间,负责指令的转化(因为最终指令只能识别机器码,无法直接识别脚本语言)
  • 不同的Shell解析器会存在语法上的差异(这个就看个人习惯了,一般常用的都是bash)

1.4、不同的Shell对比

所以我们平时在终端执行的rm mv之类的命令都是需要转化才能产生对应的效果的,而使用不同的Shell解析器去执行同一个脚本很大概率会存在报错,导致运行失败,举个例子:

脚本内容如下:

#!/bin/bash##验证不同的SHell解析器if [[ "$1" == "1" ]];then        echo "你输入的是[ $1 ]"else        echo '退出'        exit 1fiecho "解析成功"

脚本内容

我们通过不同的shell解析器去运行它

对比结果

从结果我们可以看出来,同一个脚本,不同的解析器会出现不同的结果,在这段脚本中只有bash和zsh解析完成,sh和dash都失败了,所以以后写脚本要注意这个问题!

2、Shell脚本的规范

2.1、后缀名

我们都知道, .DOC是word文档,.exe是Windows应用程序,.apk是安卓系统的软件安装包,可以说一个文件的标志就是:后缀名

Shell脚本常用的后缀名如下(简单列举):

  • .sh
  • .bin
  • .bash

而最常用的当属.sh,而实际上,我们不需要为此专门设置后缀名也是可以,即使设置无后缀、.exe照样能运行,下面演示一下:

不同的后缀名

2.2、执行方式

看过我文章的朋友可能会注意到,其他人的教程都是先给脚本赋予执行权限,然后通过下面的方式去运行:

通过赋权执行

而我的都是这样:

通过解析器执行

这时候可能就有人纳闷了,为啥你要那么秀?因为方便呀,下面就讲解一下执行方式的区别

2.1、执行方式有哪些?

分类不同会有不同的结果,在这只以语法作为分类:

  • 通过解析器主动解析(例如bash shell.sh)
  • 通过脚本自身权限解析(例如./shell.sh)

第一种的话就是我比较常用的,作用就是可以自定义Shell的解析器。

第二种就是以脚本作者设定的解析器进行解析,如果作者没有设置解析器则以当前默认Shell进行解析。

那么不同的执行方式有何差异,应该怎么利用他们之间的特性呢?

关注我,带你了解它们的应用场景,少走弯路!

shell 获取ora报错信息_带你了解企业是如何编写脚本的-第2篇:Shell脚本规范相关推荐

  1. shell 获取ora报错信息_频发:故障排除之又见 ORA-4031丨云和恩墨技术通讯

    亲爱的读者朋友: 为了及时共享行业案例,通知共性问题,达成共享和提前预防,我们整理和编辑了<云和恩墨技术通讯>,通过对过去一段时间的知识回顾,故障归纳,以期提供有价值的信息供大家参考.同时 ...

  2. shell 获取ora报错信息_ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析...

    概述 前段时间使用的oracle 11g数据库,在用一段时间后(开始要较长时间才出现,后来较短时间就出现),频繁报ORA-04030错误,具体错误信息是 ORA-04030: 在尝试分配...字节(. ...

  3. idea junit 测试看不到控制台报错信息_高手都这么给 Spring MVC 做单元测试!

    本章节主要讲解以下两部分内容: 1.Mock 测试简介 2.测试用例演示 一.Mock 测试简介 1.什么是 mock 测试 在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个「虚拟的对象」 ...

  4. 【Android NDK 开发】NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 获取 tombstone_0X 崩溃日志信息 )

    文章目录 一.崩溃信息描述 二.手机命令行操作 三.电脑命令行操作 四.Tombstone 内容 Tombstone 报错信息日志文件被保存在了 /data/tombstones/ 目录下 , 先 R ...

  5. java exception 行号_java日志记录错误的文件_方法_行号_报错信息

    1.java日志记录错误的文件.方法.行号.报错信息 StackTraceElement s= e.getStackTrace()[0]; 1.1.记录保存的文件s.getFileName() 1.2 ...

  6. alxc tool 报错数组超出了界限_代码审计之报错信息泄露与字符串截断

    机器在语言编码转换的时候,经常会出现各种各样的异常,这些神奇的字符串就有可能组合成一堆乱码出来,也有可能直接把程序搞崩溃掉,不过总有那么一些字符,可以帮助我们在利用漏洞的时候变得更简单一些,下面我们就 ...

  7. 2020/09/20 React中获取target(报错信息Warning: This synthetic event is reused for performance reasons.)

    如下图,我要获取到点击的li 我的代码 return中的内容 函数 -这里要加上 event.persist() 否则只有第一次点击能够获取到target,再次会报错,显示target:null,报错 ...

  8. java 记录错误日志文件_java日志记录错误的文件_方法_行号_报错信息

    1.java日志记录错误的文件.方法.行号.报错信息 StackTraceElement s= e.getStackTrace()[0]; 1.1.记录保存的文件s.getFileName() 1.2 ...

  9. springframework报错_应对报错信息的必杀技!

    今天遇到了一个错误,一般的错误提示会很明显,一看就知道是什么问题.今天遇到的这个说实话真的不好找原因,一般在这种情况下该怎么解决呢? 分享下我的思路吧,不一定是最好的,至少有用. 直接上图吧,下面是报 ...

最新文章

  1. 写时复制(Copy-On-Write)思想在Java中的应用
  2. ubuntu配置ipv6
  3. Docker 学习笔记之二
  4. transformer 系列语音识别
  5. 赢得市值,失去人心,美团觉得划算吗?
  6. hosts文件中同一个域名两个IP的解析顺序
  7. AlarmManager类的应用(实现闹钟功能)
  8. c java学哪个好_c语言和java学哪个好
  9. Ubuntu 14.04.4官方默认更新源sources.list
  10. 程序员的算法课(2)-排序算法
  11. python数据参数_python 的参数总结
  12. ESP32+st7789/ili9341运行LVGL例程,依赖ESP-IDF编译lv_port_esp32官方Demo(1)
  13. 反编译工具ILSpy下载
  14. 安川机器人io对照表_安川机器人按键功能一览
  15. 学个痛快,清华大学网上课程免费开放!知网免费下载!CSDN送课程!
  16. 第6章 Stata方差分析
  17. 第13章WEB13-JSP模式JDBC高级篇
  18. 在线职业教育APP开发,技能快速掌握的管家
  19. 【刷机】LG G2 能进入recovery但是不能进入新系统,can't open file ,G2刷TOT
  20. TIA博途V17中如何创建和使用VoT应用程序_Web功能

热门文章

  1. 大数据分块_空间数据库基础理论 GIS空间数据处理分析涉及的基本概念
  2. datax 高级_GitHub - HeyTool/DataX
  3. 浓郁东方民俗剪纸风新年春节海报,psd分层模板
  4. UI设计灵感|插画在App设计中有哪些常用方式?
  5. PNG免扣+高清背景素材,帮电商美工\设计师快速出稿!
  6. 早秋精品电商男装页面\海报设计PSD模板
  7. python程序文件的扩展名称是什么_python程序文件的扩展名称是什么_Python教程,python,扩展名...
  8. Linux内存管理:memblock
  9. wsl2启动桌面_WSL2使用xrdp实现图形桌面
  10. form表单属性名相同java_form表单提交 list对象给Java 后台结合