当前位置:网站首页>shell脚本入门
shell脚本入门
2022-08-11 02:03:00 【高朵】
目录
一、Shell简介
Shell是一个命令行解释器。他接收用户命令,然后调用相应的应用程序。
二、Shell入门
查看系统安装了哪些shells
cat /etc/shells

一般系统默认的shell是bash
echo $SHELL

三、第一个Shell脚本
首先创建一个脚本
eg:touch helloworld.shvim helloworld.sh
回车后,进行编写第一个shell脚本内容。
#!/bin/bash //以这句话进行开头
echo "#!/bin/bash
echo "helloword!!!!!!!""

使用./helloworld.sh会出现没有权限的提示,要对他增加执行权限
使用命令chmod 777 helloworld.sh
第一种执行方法是用bash解析器帮你执行脚本,而第二种方式是脚本自己执行,需要执行权限。
四、第二个shell脚本:多命令处理
在某个目录下创建一个txt文档,并将一条命令输出发送到文件中。
在cdx.txt文件中能查看到刚输入的字符
五、常用系统变量
$HOME $PWD $SHELL $USER
六、自定义变量
定义格式:变量名=变量值
删除格式:unset 变量名
输出变量:echo $变量
声明静态变量: readonly 变量,注意:不能unset 除非重启
变量定义规则:(1) 等号左右两边一定不能出现空格
(2)变量名称可以由字母、数字、下划线组成,不能以数字开头,环境变量名称建议大写。
(3)变量的值有空格,使用双引号进行括起来
– export 显示当前导出成用户变量的shell变量 (环境变量)和设置shell变量为用户变量
export D

七、Shell脚本中的特殊变量
$n(n为数字,0-10以内用$0-9表示,大于10之后用{}表示)
#!/bin/bash
echo "$0 $1 $2 $3"

$# 表示执行脚本传入参数的个数,常用于循环
#!/bin/bash
echo "$0 $1 $2 $3"
echo $#

$* (描述:代表命令行中所有的参数,把所有参数看成一个整体)
[email protected] (描述:也代表命令行中所有的参数,不过把每个参数区分对待)
#!/bin/bash
echo "$0 $1 $2 $3"
echo $#
echo $*
echo [email protected]

$?表示最近脚本执行的退出状态
八、运算符
expr 2 + 3 ,其中+两边必须要有空格
九、条件判断
两个整数之间的比较
文件权限判断
- w 有写的权限
- r 有读的权限
- x有执行的权限
文件类型判断
-f 存在且是常规文件
-e存在
-d存在且是目录
eg:
十、流程控制(if、case、for、while)
– if语句
执行语句
– case语句
执行语句
– for

– while

十一、read读取、basename&dirname
– read案例
- t 后面为几秒之内;-p后面为要在几秒内输入的内容


– basename(删掉所有的前缀包括最后一个‘/’字符,然后将字符串显示出来)
– dirname(保留路径,删除文件名)
十二、自定义函数
# 格式
[ function ] funname[()]
{
Action:
[return int;]
}
funname
#!/bin/bash
function sum(){
s=0;
s=$[$1 + $2]
echo $s
}
read -p "1:" P1
read -p "2" P2
sum $P1 $P2

十三、sed命令
sed是Linux下一款共能强大的非交互流式文本编辑器,能对文本进行增删改查,支持按照文本字段,按照正则去匹配文本内容,适用于大文本的编辑。
a 新增
d 删除
s 查找并替换
– 1a表示在第一行新增
十四、swk命令
awk是一种编程语言, 一个强大文件分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。
-F 指定输入文件分隔符
-v 赋值一个用户定义变量
echo "${LOCAL_PATH}" | awk -F "build" '{print $1}'
边栏推荐
- This Thursday evening at 19:00, Lesson 5 of the sixth phase of knowledge empowerment丨OpenHarmony WiFi subsystem
- Detailed explanation of common methods of filtering matrix (array) elements in Matlab
- OpenWrt之opkg详解
- 【开源】壁纸软件,给自己电脑设计专属特效
- How to solve the problem of Tomcat booting and crashing
- 压力能变成动力
- 22-7-31
- 阿里亿级并发册 + 机器学习算法 + 面试册 + 优化册 + 代码册 笔记!!!
- gRPC闭包调度器
- 【oops-framework】模板项目【oops-game-kit】使用简介
猜你喜欢
随机推荐
软件测试面试题:单元测试的策略有哪些?
C# string与stream的相互转换
数据的存储(下)——浮点型在内存中的存储
OpenWrt之opkg详解
TRCX:掺杂过程分析
14.cuBLAS开发指南中文版--cuBLAS中的Level-1函数nrm2()和rot()
C# WebBrower1控件可编辑模式保存时会提示“该文档已被修改,是否保存修改结果”
Js prototype and prototype chain and prototype inheritance
研发项目流程规范
FPGA learning column (xinlinx) serial communication -
报错处理:org.xml.sax.SAXParseException: 不允许有匹配 “[xX][mM][lL]“ 的处理指令目标
Tomca启动闪退问题如何解决
comp3331-9331-21t1-midterm复习
This Thursday evening at 19:00, Lesson 5 of the sixth phase of knowledge empowerment丨OpenHarmony WiFi subsystem
Deep Learning [Chapter 2]
软件测试面试题:Web服务器指标指标?
0 in the figure, etc. LeetCode565. Array nesting
络达开发---UI定义+自定义按钮事件
uni-app实现app和H5调用手机拨号功能
【C 数据存储详解】(1)——深度剖析整形数据在内存中的存储


![[oops-framework] Template project [oops-game-kit] Introduction](/img/09/29faf7626b0bc66e4d016a15e80b8b.png)






