当前位置:网站首页>初识shell脚本
初识shell脚本
2022-08-01 04:35:00 【找BUG的老爷】
引言:现在越来越多的个人和企业在使用linux操作系统,所以一些基本的命令都是了解的。那么如果想减少手动的输入可以吗。答案是可以的。用什么方法呢,答案就可以写脚本,最方便的就是linux自带的shell脚本。接下来就跟着我一起,认识、学习并使用shell实现基本的操作,让我们开始吧!
既然是脚本,那么必然有解释器。shell的解释器很多,咱们咱们可以通过以下命令查看
cat /etc/shells结果如下图所示

咱们使用其中一种就可以了,具体怎么使用呢接下来会提到
下面开始编辑脚本并且指定解释器
使用命令
vi test1.sh进入里面编辑
#!/bin/bashecho "hello world"
其中#!/bin/bash 就是指定解释器的作用了
可以执行了,但在执行之前要给这个文件赋一个执行权限
chmod +x test1.sh接下来执行
./test1.sh
这个就是最简单的shell脚本了,仅仅是输出了hello world
以后大家接触更多的可能是$,那么关于它一些常见的组合以及意思我在这里列举出来,以后遇到的时候会用的到的
$0:Shell 的命令本身
$1到9:表示 Shell 的第几个参数
$? :显示最后命令的执行情况
$#:传递到脚本的参数个数
$$:脚本运行的当前进程 ID 号
$*:以一个单字符串显示所有向脚本传递的参数
$!:后台运行的最后一个进程的 ID 号
$-:显示 Shell 使用的当前选项
大家可以尝试着去敲一敲这些命令输出一下,我这里给大家先示范一下
echo $0
一些答疑
问:可以不指定解释器吗
答:可以,不指定的话,那么就是默认的解释器去执行了,即/bin/bash
问:默认的解释器是什么呢
答:可以使用以下命令
echo $SHEL
问:还有其他的执行方式吗
答:有的,此外还有两种方式,大家按照自己的习惯来
第一个就是执行解释器,文件名当参数
/bin/bash test1.sh这种方式的话文件里面就没有必要去指定解释器了,因为以执行解释器为主
第二个就是source命令
source test1.sh以上两个执行的方式都不用给脚本赋一个执行权限了,因为执行的不是文件本身
问:这几个执行的方式有什么区别吗
答:是有区别的,source的话可以理解为顺序的执行命令,现在显示的最终结果,同时目录是最终执行的所在的目录,另外两个的话可以这么理解, 新起了一个进程,当前和执行环境独立,对当前没有影响可以举一个例子看一下
新建一个test2.sh的文件,然后里面内容为
cd /cd ~
直接解释器执行
sh test2.sh然后pwd一下,你会发现路径并没有改变
那么source呢
source test2.sh这个时候会发现路径已经改变了,区别的话也已经很清晰了
问:我的后缀名必须是.sh吗
答:不是,在linux中,所有的文件都没有后缀名的概念,可以起任何的名字,咱们这么起的原因就是方便查看,方便理解
以上就是关于shell脚本的基本内容了,接下来会持续更新~
边栏推荐
- ICML2022 | Deep Dive into Permutation-Sensitive Graph Neural Networks
- UE4 rays flashed from mouse position detection
- PMP 项目资源管理
- 让你的 Lottie 支持文字区域内自动换行
- 最新 955 不加班的公司名单
- Step by step hand tearing carousel Figure 3 (nanny level tutorial)
- [Getting Started Tutorial] Rollup Module Packager Integration
- "ArchSummit: The cry of the times, technical people can hear"
- Mysql基础篇(约束)
- typescript28-枚举类型的值以及数据枚举
猜你喜欢
随机推荐
产品经理访谈 | 第五代验证码的创新与背景
Flink 1.13 (8) CDC
Mysql中的数据类型和运算符
动态规划 01背包
Message queue MySQL table for storing message data
这里有110+公开的专业数据集
Progressive Reconstruction of Visual Structure for Image Inpainting 论文笔记
风险策略调优中重要的三步分析法
基于STM32设计的UNO卡牌游戏(双人、多人对战)
JS new fun(); class and instance JS is based on object language Can only act as a class by writing constructors
API设计笔记:pimpl技巧
safari浏览器怎么导入书签
阿叶的目标
最新 955 不加班的公司名单
Typescript22 - interface inheritance
MySQL4
Advice given by experts with four years of development experience in Flutter tutorial
【无标题】
软件测试周刊(第82期):其实所有纠结做选择的人心里早就有了答案,咨询只是想得到内心所倾向的选择。
智芯传感输液泵压力传感器 为精准智能控制注入科技“强心剂”









