带你了解企业是如何编写脚本的-第2篇:Shell脚本规范
liuian 2024-11-28 00:51 66 浏览
在带你了解企业是如何编写脚本的-第一篇:认识脚本这篇文章中,我对脚本进行了一些基本的讲解,那么今天我们就来了解一下Shell脚本有哪些规范(约定俗成)。
俗话说无规矩不成方圆,想要长远的发展就需要制定一定的规范,不能乱来,下面开始讲解一些比较基本的Shell基础。
1、Shell解析器
Shell语言和其他语言都一样需要对应的解析器才能起作用,而不同的解析器对脚本的语法又有一些细微的差别,下面就了解一下目前常用的解析器:
- BASH
- DASH
- SH
- KSH
- CSH
- RBASH
一般Linux系统会内置几个解析器,然后有一个设置为默认解析器,那么这些所谓的解析器作用是什么?又该如何获取这些信息呢?
1.1、如何查看当前有哪些Shell
cat /etc/shells #查看当前系统支持的Shell执行结果:
如果想使用其他Shell也可以通过安装命令去安装它,例如:
sudo apt install zsh #安装zsh安装完成之后,我们再次查看系统的Shell列表,可以看到,此时已经出现了刚才安装的ZSH。
1.2、如何知道当前默认Shell
系统默认Shell会通过一个系统变量去存储,所以只需要执行下面的命令即可获取当前的默认Shell
echo $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 1
fi
echo "解析成功"我们通过不同的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进行解析。
那么不同的执行方式有何差异,应该怎么利用他们之间的特性呢?
关注我,带你了解它们的应用场景,少走弯路!
- 上一篇:理解 Linux 终端、终端模拟器和伪终端
- 下一篇:第七章 设置环境变量(续三)
相关推荐
- 联想win7下载链接(联想win7oem原版下载)
-
如果你想在联想小新win7上下载AMD软件,首先要确定你要下载的是哪款软件。然后,你可以前往AMD官方网站,在网站上搜索该软件并下载。在下载完成后,双击安装该软件即可。另外,你也可以通过第三方软件下载...
- 三星笔记本电脑售后服务维修中心
-
您可以通过以下方式查询附近的三星售后服务点:访问三星官方网站,在网站首页选择“售后服务”选项,然后选择“售后服务网点查询”,在弹出的页面中选择所在省份和城市,即可查询附近的售后服务网点。在手机应用商店...
- 电脑重装系统后没有声音怎么解决
-
电脑重装系统后没有声音,可能是声卡驱动未安装、声卡驱动不兼容或者声音相关服务未开启等原因。解决方法可以尝试重新安装声卡驱动、更新驱动程序软件或者打开声音相关设置。如果问题仍然存在,建议寻求专业人士的...
- word2007安装产品密钥(安装office2010产品密钥)
-
可以通过以下方式获取Word文档的产品密钥:购买正版Word软件,从官方渠道获得产品密钥。下载并安装MicrosoftOffice,从安装过程中获取产品密钥。请注意,任何未经授权的方式获取...
-
- 绝地求生电脑配置要求(绝地求生电脑配置要求2024)
-
绝地求生的最低配置国服官方给出的最低配置是内存6G,CPUInteli3-4340/AMDFX-630,显卡GTX660/HD7850,所有效果最低,但是说实话,这个配置玩起来,体验太差,而且没几局就需要重启客户端,而且GTX6...
-
2025-12-23 21:05 liuian
- 亲手自己重装系统win7(自己怎么重装win7)
-
要一键安装重装系统Win7,您可以使用Windows7安装盘或USB驱动器。首先,将安装盘或USB插入计算机,并重启计算机。然后,在计算机启动时按下相应的按键(通常是F12或Del键)进入启动菜单。...
- windows7旗舰版临时激活(win7暂时激活)
-
关于这个问题,目前,有几种方法可以激活Windows7旗舰版,以下是最简单的几种方法:1.使用激活工具:可以使用一些第三方激活工具,如KMSpico、MicrosoftToolkit等工具来激活...
- 免费查序列号入口(免费查序列号入口平板)
-
苹果查序列号入口可登陆苹果官网checkcoverage.apple.com进行查询,具体步骤如下:1、打开手机设置,点击“通用”;2、进入页面后点击“关于本机”;3、页面跳转后,我们就可以看到本机的...
- 磁盘被保护了如何取消保护(磁盘被保护了如何取消保护设置)
-
1、打开磁盘分区管理窗口中选择要去掉被写保护的磁盘。2、选中磁盘后单击鼠标右键可显示出选项列表下选择属性。3、打开磁盘属性对话框中选择点击硬件选项卡。4、然后在硬件页面中选中所有磁盘后再单击属性按钮。...
- win7系统硬盘分区教程(win7如何对硬盘分区)
-
在Win7中,你可以使用磁盘管理工具来给硬盘分区。首先,打开控制面板,点击“系统和安全”,然后选择“管理工具”。在管理工具中,找到“计算机管理”,点击打开。在计算机管理窗口中,选择“磁盘管理”。在磁盘...
- 电脑不识别移动硬盘怎么办(笔记本电脑不识别移动硬盘怎么办)
-
电脑无法识别移动硬盘的原因有很多,以下是一些可能的原因和相应的解决方法:1.USB供电不足:移动硬盘功率较大,可能需要更多的电压。前置USB接口可能无法提供足够的电压。解决方法是将移动硬盘接到...
- cf穿越火线烟雾头盔怎么调(cf的最新烟雾头盔怎么调)
-
cf新版烟雾保护头盔调置:?cf这款游戏中,更新后调整烟雾头的方法是打开NVIDIA控制面板,在NVIDIA控制面板中选择调整视频颜色设置,接着点击通过NVIDIA设置选项,然后将亮度调整到79%,对...
- u盘怎样格式化最安全(u盘怎么格式化最干净)
-
只需将U盘插入到电脑之后,然后在我的电脑中找到U盘的盘符,使用鼠标右键点击打开菜单,其中就可以看到【格式化】的选项,根据需要选择然后点击【快速格式化】即可U盘格式是FAT32格式,那么其传输速度会明显...
-
- 移动路由器怎么改wifi密码(移动网络路由器怎么改密码wifi密码)
-
1.打开手机设置,找到wifi点击进入,点击已连接的wifi。2.里面有一个路由器的选项,记住路由器后面一串数字。3.打开手机网页,在地址栏输入刚记住的那串数字,点击进入,选择继续访问网页版,输入管理员密码,点击确定。4.点击路由设置,点击...
-
2025-12-23 16:05 liuian
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
