当前位置:网站首页>shell编程
shell编程
2022-07-26 08:19:00 【Stephen_Tao】
文章目录
一、shell简介
shell是一个命令行解释器,它为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。
二、shell脚本的执行方式
脚本格式要求
- 脚本以
#!/bin/bash开头 - 脚本需要有可执行权限
- 脚本以
脚本常用的执行方式
- 输入脚本的绝对路径或者相对路径(首先要赋予.sh文件可执行权限,再执行脚本)
- sh+脚本(不用赋予脚本可执行权限,直接执行即可)
三、shell变量
3.1 shell变量介绍
- Linux shell中的变量分为系统变量和用户自定义变量
- 系统变量:
$HOME、$PWD、$SHELL、$USER等 - 显示当前shell中的所有变量:
set
3.2 shell变量的定义
3.2.1 基本语法
- 定义变量:变量=值
- 撤销变量:unset 变量
- 声明静态变量:readonly 变量(静态变量声明后不能撤销)
- 多行注释的写法:
:<<! txt !(开头和结尾都单独一行)
3.2.2 定义变量的规则
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头
- 等号两侧不能有空格
- 变量名称一般习惯为大写
3.2.3 将命令的返回值赋予变量
A=‘date’反引号,运行里面的命令,并把结果返回给变量AA=$(date)等价于反引号
四、环境变量的设置
基本语法:
export 变量名=变量值(功能描述:将shell变量输出为环境变量/全局变量)source 配置文件(功能描述:让修改后的配置信息立即生效)echo $变量名(功能描述:查询环境变量的值)
五、位置参数变量
5.1 基本介绍
当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。比如:./myshell.sh 100 200,这个就是一个执行shell的命令行,可以在myshell脚本中获取到参数信息。
5.2 基本语法
$n(功能描述:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10})$*(功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)[email protected](功能描述:这个变量也代表命令行中所有的参数,不过[email protected]把每个参数区分对待)$#(功能描述:这个变量代表命令行中所有的参数个数)
六、预定义变量
6.1 基本介绍
shell设计者事先已经定义好的变量,可以直接在shell脚本中使用。
6.2 基本语法
$$(功能描述:当前进程的进程号(PID))$!(功能描述:后台运行的最后一个进程的进程号(PID))$?(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)
七、运算符
基本语法:
$((运算符))或者$[运算式]或者expr m + n- 注意
expr运算符间要有空格,如果希望将expr的结果赋给某个变量,使用反引号或者$ expr \*,/,%分布代表乘,除,取余
九、流程控制
9.1 if条件判断
基本语法:(注意condition前后要有空格)
if [ condition ]
then 语句
elif
then 语句
fi
常用判断条件:
字符串比较(=)
两个整数的比较
-lt(小于)-le(小于等于)-eq(等于)-gt(大于)-ge(大于等于)-ne(不等于)
按照文件权限进行判断
-r(有读的权限)-w(有写的权限)-x(有执行的权限)
按照文件类型进行判断
-f(文件存在并且是一个常规文件)-e(文件存在)-d(文件存在并是一个目录)
应用案例:
- ok是否等于ok

- hello.sh文件是否存在

9.2 case语句
基本语法:
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
9.3 for循环
基本语法1:
for 变量 in 值1 值2 值3...
do
程序
done
基本语法2:
for((初始值;循环控制条件;变量变化))
do
程序
done
9.4 while循环
基本语法:
while [ 条件判断式 ]
do
程序
done
9.5 read读取控制台输入
基本语法:read [选项] [参数]
选项:
- -p:指定读取值时的提示符
- -t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待。
参数:指定读取值的变量名
案例:
十、shell函数
10.1 系统函数
10.1.1 basename函数
功能:返回完整路径最后/的部分,常用于获取文件名
基本语法:basename [pathname] [suffix](功能描述:basename命令会删掉所有的前缀包括最后一个('/')字符,然后将字符串显示出来)。
选项:suffix为后缀,如果被指定,basename会将pathname中的suffix去掉。
10.1.2 dirname函数
功能:返回完整路径最后/前面的部分,常用于返回路径部分。
基本语法:dirname 文件绝对路径(功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))
10.2 自定义函数
基本语法:
[ function ] funcname()
{
Action;
[return int;]
}
案例:

参考资料:2021韩顺平 一周学会Linux
边栏推荐
- General Dao interface design
- Recurrence of strtus2 historical vulnerability
- mysql函数汇总之条件判断函数
- OSPF summary
- Exam summary on June 27, 2022
- Web side 3D visualization engine hoops communicator reads 10g super large model test | digital twin Technology
- Flex three column layout
- [June 29, 2022] examination summary
- 2022/7/7 exam summary
- Day 4 homework
猜你喜欢
随机推荐
Exam summary on July 15, 2022
Awk operation
Official Oracle document
Share high voltage ultra low noise LDO test results
General Dao interface design
Random distribution learning notes
Exam summary on July 13, 2022
BGP routing principle
JSP built-in object (implicit object) -- input / output object
Bee guitar score high octave and low octave
Web side 3D visualization engine hoops communicator reads 10g super large model test | digital twin Technology
2022-024arts: Longest valid bracket
JSP implicit object -- scope
外卖小哥,才是这个社会最大的托底
mysql函数汇总之日期和时间函数
Why don't you tell me what long polling is?
Team members participate in 2022 China multimedia conference
An empirical study on urban unemployment in Guangxi (Macroeconomics)
数组的介绍--Array
通用 DAO 接口设计









