前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >初识shell脚本

初识shell脚本

作者头像
找Bug
发布2022-12-14 18:35:13
1860
发布2022-12-14 18:35:13
举报
文章被收录于专栏:你的Bug我做主你的Bug我做主

引言:现在越来越多的个人和企业在使用linux操作系统,所以一些基本的命令都是了解的。那么如果想减少手动的输入可以吗。答案是可以的。用什么方法呢,那就是写脚本,最方便的就是linux自带的shell脚本。接下来就跟着我一起,认识、学习并使用shell实现基本的操作,让我们开始吧!

既然是脚本,那么必然有解释器。shell的解释器很多,咱们可以通过下面命令查看

代码语言:javascript
复制
cat /etc/shells

结果如下图所示

咱们使用其中一种解释器就可以了,具体怎么使用呢接下来会提到

下面开始编辑脚本并且指定解释器

使用命令vi

代码语言:javascript
复制
vi test1.sh

进入里面编辑

代码语言:javascript
复制
#!/bin/bash

其中#!/bin/bash 就是指定解释器的作用了

可以执行了,但在执行之前要给这个文件赋一个执行权限

代码语言:javascript
复制
chmod +x test1.sh

接下来执行

代码语言:javascript
复制
./test1.sh

这个就是最简单的shell脚本了,仅仅是输出了hello world

以后大家接触更多的可能是$,那么关于它一些常见的组合以及意思我在这里列举出来,以后遇到的时候会用的到的

  • $0:Shell 的命令本身
  • $1到9:表示 Shell 的第几个参数
  • $? :显示最后命令的执行情况
  • $#:传递到脚本的参数个数
  • $$:脚本运行的当前进程 ID 号
  • $*:以一个单字符串显示所有向脚本传递的参数
  • $!:后台运行的最后一个进程的 ID 号
  • $-:显示 Shell 使用的当前选项

大家可以尝试着去敲一敲这些命令输出一下,我这里给大家先示范一下

代码语言:javascript
复制
echo $0

一些答疑

问:可以不指定解释器吗

答:可以,不指定的话,那么就是默认的解释器去执行了,即/bin/bash

问:默认的解释器是什么呢

答:可以使用以下命令

代码语言:javascript
复制
echo $SHEL

问:还有其他的执行方式吗

答:有的,此外还有两种方式,大家按照自己的习惯来

第一个就是执行解释器,文件名当参数

代码语言:javascript
复制
/bin/bash test1.sh

这种方式的话文件里面就没有必要去指定解释器了,因为以执行解释器为主

第二个就是source命令

代码语言:javascript
复制
source test1.sh

以上两个执行的方式都不用给脚本赋一个执行权限了,因为执行的不是文件本身

问:这几个执行的方式有什么区别吗

答:是有区别的,source的话可以理解为顺序的执行命令,现在显示的最终结果,同时目录是最终执行的所在的目录,另外两个的话可以这么理解, 新起了一个进程,当前和执行环境独立,对当前没有影响。可以举一个例子看一下

新建一个test2.sh的文件,然后里面内容为

代码语言:javascript
复制
cd /
cd ~

直接解释器执行

代码语言:javascript
复制
sh test2.sh

然后pwd一下,你会发现路径并没有改变

那么source呢

代码语言:javascript
复制
source test2.sh

这个时候会发现路径已经改变了,区别的话也已经很清晰了

问:文件的后缀名必须是.sh吗

答:不是,在linux中,所有的文件都没有后缀名的概念,可以起任何的名字,咱们这么起的原因就是方便查看,方便理解

以上就是关于shell脚本的基本内容了,接下来会持续更新~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 找Bug 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档