shell 获取ora报错信息_带你了解企业是如何编写脚本的-第2篇:Shell脚本规范
在带你了解企业是如何编写脚本的-第一篇:认识脚本这篇文章中,我对脚本进行了一些基本的讲解,那么今天我们就来了解一下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脚本规范相关推荐
- shell 获取ora报错信息_频发:故障排除之又见 ORA-4031丨云和恩墨技术通讯
亲爱的读者朋友: 为了及时共享行业案例,通知共性问题,达成共享和提前预防,我们整理和编辑了<云和恩墨技术通讯>,通过对过去一段时间的知识回顾,故障归纳,以期提供有价值的信息供大家参考.同时 ...
- shell 获取ora报错信息_ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析...
概述 前段时间使用的oracle 11g数据库,在用一段时间后(开始要较长时间才出现,后来较短时间就出现),频繁报ORA-04030错误,具体错误信息是 ORA-04030: 在尝试分配...字节(. ...
- idea junit 测试看不到控制台报错信息_高手都这么给 Spring MVC 做单元测试!
本章节主要讲解以下两部分内容: 1.Mock 测试简介 2.测试用例演示 一.Mock 测试简介 1.什么是 mock 测试 在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个「虚拟的对象」 ...
- 【Android NDK 开发】NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 获取 tombstone_0X 崩溃日志信息 )
文章目录 一.崩溃信息描述 二.手机命令行操作 三.电脑命令行操作 四.Tombstone 内容 Tombstone 报错信息日志文件被保存在了 /data/tombstones/ 目录下 , 先 R ...
- java exception 行号_java日志记录错误的文件_方法_行号_报错信息
1.java日志记录错误的文件.方法.行号.报错信息 StackTraceElement s= e.getStackTrace()[0]; 1.1.记录保存的文件s.getFileName() 1.2 ...
- alxc tool 报错数组超出了界限_代码审计之报错信息泄露与字符串截断
机器在语言编码转换的时候,经常会出现各种各样的异常,这些神奇的字符串就有可能组合成一堆乱码出来,也有可能直接把程序搞崩溃掉,不过总有那么一些字符,可以帮助我们在利用漏洞的时候变得更简单一些,下面我们就 ...
- 2020/09/20 React中获取target(报错信息Warning: This synthetic event is reused for performance reasons.)
如下图,我要获取到点击的li 我的代码 return中的内容 函数 -这里要加上 event.persist() 否则只有第一次点击能够获取到target,再次会报错,显示target:null,报错 ...
- java 记录错误日志文件_java日志记录错误的文件_方法_行号_报错信息
1.java日志记录错误的文件.方法.行号.报错信息 StackTraceElement s= e.getStackTrace()[0]; 1.1.记录保存的文件s.getFileName() 1.2 ...
- springframework报错_应对报错信息的必杀技!
今天遇到了一个错误,一般的错误提示会很明显,一看就知道是什么问题.今天遇到的这个说实话真的不好找原因,一般在这种情况下该怎么解决呢? 分享下我的思路吧,不一定是最好的,至少有用. 直接上图吧,下面是报 ...
最新文章
- 写时复制(Copy-On-Write)思想在Java中的应用
- ubuntu配置ipv6
- Docker 学习笔记之二
- transformer 系列语音识别
- 赢得市值,失去人心,美团觉得划算吗?
- hosts文件中同一个域名两个IP的解析顺序
- AlarmManager类的应用(实现闹钟功能)
- c java学哪个好_c语言和java学哪个好
- Ubuntu 14.04.4官方默认更新源sources.list
- 程序员的算法课(2)-排序算法
- python数据参数_python 的参数总结
- ESP32+st7789/ili9341运行LVGL例程,依赖ESP-IDF编译lv_port_esp32官方Demo(1)
- 反编译工具ILSpy下载
- 安川机器人io对照表_安川机器人按键功能一览
- 学个痛快,清华大学网上课程免费开放!知网免费下载!CSDN送课程!
- 第6章 Stata方差分析
- 第13章WEB13-JSP模式JDBC高级篇
- 在线职业教育APP开发,技能快速掌握的管家
- 【刷机】LG G2 能进入recovery但是不能进入新系统,can't open file ,G2刷TOT
- TIA博途V17中如何创建和使用VoT应用程序_Web功能
热门文章
- 大数据分块_空间数据库基础理论 GIS空间数据处理分析涉及的基本概念
- datax 高级_GitHub - HeyTool/DataX
- 浓郁东方民俗剪纸风新年春节海报,psd分层模板
- UI设计灵感|插画在App设计中有哪些常用方式?
- PNG免扣+高清背景素材,帮电商美工\设计师快速出稿!
- 早秋精品电商男装页面\海报设计PSD模板
- python程序文件的扩展名称是什么_python程序文件的扩展名称是什么_Python教程,python,扩展名...
- Linux内存管理:memblock
- wsl2启动桌面_WSL2使用xrdp实现图形桌面
- form表单属性名相同java_form表单提交 list对象给Java 后台结合