Linux——shell编程
Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。
示意图:
脚本格式要求:
- 脚本以#!/bin/bash开头
- 文件必须有可执行权限
创建第一个shell脚本
在这里我们先创建一个hello.sh文件,然后用vi编辑器输入内容
执行方式:
- 通过sh/bash命令执行
- 先给文件赋予可执行权限,然后通过相对路径或绝对路径的方式执行
绝对路径执行:
shell变量
介绍
1)Linux Shell 中的变量分为,系统变量和用户自定义变量。
2)系统变量:$ HOME、$ PWD、$ SHELL、$ USER 等等
定义变量:变量=值
撤销变量:unset 变量
声明静态变量:readonly 变量,注意:不能 unset
案例 1:定义变量 A,然后撤销变量 A
案例 2:显示当前 shell 中所有变量:set
定义变量的规则
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
- 等号两侧不能有空格
- 变量名称一般习惯为大写
将命令的返回值赋值给变量(重点)
也就是在shell文件里使用终端的命令,并将命令返回的字符串返回给变量。
方法:
注意:反引号在键盘esc键的下面,一般我们习惯使用上述第二种方式赋值。
案例:
上面我们将ls -l /home 命令的返回值赋给了LS变量,date命令赋值给了MY_DATE变量,然后输出。
设置环境变量
- export 变量名=变量值 (功能描述:将 shell 变量输出为环境变量)
- source 配置文件(功能描述:让修改后的配置信息立即生效)
Linux里将环境变量存放在/etc/profile文件里
案例:设置tomcat的环境变量
使用vim编辑/etc/profile文件,在文件末尾添加export语句,然后使用source命令让文件生效,最后使用echo测试输出TOMCAT_HOME成功。
位置参数变量
当我们执行一个 shell 脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。比如我们执行一个shell脚本,可以在执行命令后面跟参数作为变量传入文件内使用,这就是位置参数变量。
语法:
- $ n (功能描述:n 为数字,$ 0 代表命令本身,$ 1-到$ 9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如$ {10})
- $ * (功能描述:这个变量代表命令行中所有的参数,$ *把所有的参数看成一个整体)
- $ @(功能描述:这个变量也代表命令行中所有的参数,不过$ @把每个参数区分对待)
- $ #(功能描述:这个变量代表命令行中所有参数的个数)
案例:
$ 0表示命令名,$ 1代表第一个参数…,在执行脚本前应为文件添加可执行权限,在这里$ @与$ *都代表全部参数,但是两种间有略微差别,将他们用引号引起来分别对他们进行迭代时,$ *一次会输出全部参数$ @则会一个个输出。
参考https://blog.csdn.net/miachen520/article/details/98661139
预定义变量
就是 shell 设计者事先已经定义好的变量,可以直接在 shell 脚本中使用
语法:
- $$ :当前进程的进程号(PID)
- $! :后台运行的最后一个进程的进程号(PID)
- $?:最后一次执行的命令的返回状态。0表示成功,非0表示不成功。
案例:
创建preVar.sh文件,在第二行进行后台执行position.sh(在命令后面加&),最后返回成功执行状态
运算符
语法:
- ((算术表达式))
- [算术表达式]
- expr 算术表达式(运算符直接必须加空格)
案例:
- 计算(3+2)*4
- 2.计算两个参数的和
条件判断
语法:
[ condition ](注意 condition 前后要有空格)
非空返回 true,可使用$?验证(0 为 true,>1 为 false)
常用判断条件
- 两个整数的比较
= 字符串比较
-lt 小 于
-le 小于等于
-eq 等 于
-gt 大 于
-ge 大于等于
-ne 不等于 - 按照文件权限进行判断
-r 有读的权限 [ -r 文件 ]
-w 有写的权限
-x 有执行的权限
3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并是一个目录
案例:
- “ok"是否等于"ok”
- 23是否大于22
结果:
- aaa.txt文件是否存在
- aaa.txt文件是否有读写权限
流程控制
if判断
语法
- if [ 条件判断式 ];then
程序
fi - if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
fi - if [ 条件判断式 ]
then
程序
else [ 条件判断式 ]
then
程序
fi
注意:中括号与条件判断式之间必须要有空格
案例:判断输入参数大于等于80优秀,大于等于60及格,否则不及格
case语句
语法:
case $变量名 in
“值 1”)
如果变量的值等于值 1,则执行程序 1
;;
“值 2”)
如果变量的值等于值 2,则执行程序 2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
案例:当命令行参数是 1 时,输出 “周一”, 是 2 时,就输出"周二", 其它情况输出 “其他”
for循环
有两种形式
for 变 量 in 值 1 值 2 值 3…
do
程序
done
案例1:打印命令行参数
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
案例2:1到100累加并输出
while循环
语法
while [ 条件判断式 ]
do
程序
done
案例:命令行输入一个数n,计算1+…+n的值
read读取控制台
read(选项)(参数)
选项:
- -p:指定读取值时的提示符;
- -t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了
参数变量:指定读取值的变量名
案例:
1.读取控制台输入一个 num 值
2. 读取控制台输入一个 num 值,在 10 秒内输入。
测试案例2时第一次十秒内未输入,第二次输入
函数
shell 编程和其它编程语言一样,有系统函数,也可以自定义函数。这里介绍两个系统函数。
两个系统函数
- basename
功能:返回完整路径后面的部分,常用于获取路径名
语法:
basename[路径名][后缀]
注意:basename 命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来,如果选项带有后缀,返回值将会把后缀删掉
案例:
- dirname
功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)
案例:
自定义函数
语法:
[ function ] funname[()]
{
Action;
[return int;]
}
案例:就是输入的两个数之和
Linux——shell编程相关推荐
- Linux Shell 编程学习总结
Shell 教程 Shell简介:什么是Shell,Shell命令的两种执行方式 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成 ...
- linux实验三shell程序设计,实验三 LINUX SHELL编程
精选文库 -实验三LINUX SHELL 编程 四.实验内容 本实验包含两个具体的SHELL程序编写任务,较为全面地涉及了SHELL 程序的设计方法和技术.内容如下: 1.创建以下菜单程序: USER ...
- linux —— shell 编程(文本处理)
导读 本文为博文 linux -- shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed a ...
- 【“计算机科学与技术”专业小白成长系列】Linux Shell 编程 极简教程
Linux Shell 编程 极简教程 内容摘要 本文是 Linux Shell 编程简单入门.主要内容: Linux 简介 Shell 编程入门 Kotlin 脚本与 Shell 脚本 Linux ...
- 《Linux Shell编程从初学到精通(第2版)》pdf
下载地址:网盘下载 内容简介 编辑 shell是用户与内核进行交互操作的一种接口,是linux最重要的软件之一.目前最流行的shell称为bash shell,bash shell脚本编程以其简洁.高 ...
- linux简单重定向代码,Linux Shell编程(26)——代码块重定向
像 while, until, 和 for 循环代码块, 甚至 if/then 测试结构的代码块都能做到标准输入的重定向. 即使函数也可以使用这种重定向的格式 .所有的这些依靠代码块结尾的 < ...
- Linux Shell编程语句case
Linux Shell编程case语句 case语句 case语句适用于需要进行多重分支的应用情况. case分支语句的格式如下:case $变量名 in模式1)命令序列1;;模式2)命令序列2;; ...
- linux shell 处理日语,linux —— shell 编程(文本处理)
导读 本文为博文linux -- shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 1.基本文本处理 sort:用于排序,常 ...
- linux怎么退出shell编程,Linux Shell编程(11)——退出和退出状态
exit命令一般用于结束一个脚本,就像C语言的exit一样.它也能返回一个值给父进程. 每一个命令都能返回一个退出状态(有时也看做返回状态).一个命令执行成功返回0,一个执行不成功的命令则返回一个非零 ...
- 「Linux」Linux Shell 编程基础入门
Linux Shell 编程基础入门 1. 变量 1.1 变量定义 1.2 使用变量 1.3 引号 1.4 将命令的结果赋值给变量 1.5 位置参数 1.6 特殊变量及其含义 2. 字符串 2.1 字 ...
最新文章
- python编程面向对象很简单,只需要掌握这几点
- 程序员学历低,该被歧视吗? | 每日趣闻
- 求链表倒数第k个结点
- Touchpad Synaptics 触摸板(中文) [zt]
- Luogu P2735 电网【真·计算几何/Pick定理】By cellur925
- Python中用input()和print()体现输入输出重定向
- Python精通-Python元组操作
- 话说 Oracle ACE 这回事儿
- 一套OA系统 破解中小企业4大管理难题
- moments音标_moment 是什么意思_moment 的翻译_音标_读音_用法_例句_爱词霸在线词典...
- LightProxy 无线端代理iOS,安装验证证书后仍不生效
- 芯片封装测试CP,FT,WT基本概念
- 常见的图像重采样算法
- JS--JS运行三部曲--渡一教育(视频笔记)
- 车道线识别(一) 简单识别
- PCB javascript实现个税5000计算
- Bright Star - John Keats
- Python Qt GUI设计:UI界面可视化组件、属性概述(基础篇—4)
- C语言:编写一个程序判断一个数是否为素数/
- 发送短信验证码倒计时,CountDownTimer;