linux shell编程从入门到精通pdf_SHELL脚本编程入门
一. SHELL入门
1.1 变量
1.1.1 变量名规范
- 变量是由任何字母、数字、下划线组成的字符串,且不能以数字开头。
- 区分字母大小写
- 变量、等号、值中间不能出现任何空格
实例
1.1.2 位置变量
当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置参数变量来表示这些参数。
位置参数变量 | 描述 |
---|---|
$n | n 为数字,$0 代表Shell本身的文件名,$1〜$9 代表第 1~9 个参数,10 以上的参数需要用大括号包含, 如${10} |
$* | 命令行所有参数,把所有的参数看成一个整体 |
$@ | 命令行中所有参数,但每个参数区别对待 |
$# | 命令行中所有参数的个数 |
实例
1.1.3 环境变量
环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或多个应用程序将使用到的信息。Linux是一个多用户的操作系统,每个用户登录系统时都会有一个专用的运行环境,通常情况下每个用户的默认的环境都是相同的。这个默认环境就是一组环境变量的定义。每个用户都可以通过修改环境变量的方式对自己的运行环境进行配置。
分类
- 对所有用户生效的环境变量 /etc/profile
- 对特定用户生效的环境变量 ~/.bashrc或者~/.bash_profile
- 临时有效的环境变量 export
常用环境变量
环境变量 | 含义 |
---|---|
PATH | 命令搜索的路径 |
HOME | 用户家目录的路径 |
LOGNAME | 用户登录名 |
PWD | 当前所在路径 |
HISTFILE | 历史命令的保存文件 |
HISTSIZE | 历史命令保存的最大行数 |
HOSTNAME | 主机名 |
SHELL | 用户当前使用的SHELL |
PS1 | 一级命令提示符 |
TMOUT | 用户和系统交互过程的超时值 |
IFS | 系统输入分隔符 |
OFS | 系统输出分隔符 |
实例
1.2 管道
将一个命令的输出作为另一个命令的输入
实例
- 列出所有安装过的软件包
rpm -qarpm命令是RPM软件包的管理工具
- 列出与python相关的软件包
| grep pythonLinux grep 命令用于查找文件里符合条件的字符串。-a :将 binary 文件以 text 文件的方式搜寻数据-c :打印匹配次数-f 两个文件相同行 如,grep -f file1 file2-h 不显示匹配行所在文件名-i :忽略大小写的不同,所以大小写视为相同-l 只显示匹配到的文件名-n :顺便输出行号-o 只显示匹配的字符-v :只显示不匹配的行。 --color
- 显示与python相关的软件包的行数
| grep python
1.3 退出状态码
1.3.1 退出状态码描述
所有的shell命令都使用退出状态吗来告知shell它已执行完毕
退出状态码是一个0~255的整数值
Linux提供了一个$?来捕获退出状态码的值,所以,可以通过echo语句测试命令是否运行成功。
一般来讲,退出状态 0 表示正常执行,没有遭遇任何问题。其他非零的状态码均表示失败。
状态码 | 描述 |
---|---|
0 | 命令成功结束 |
1 | 一般性未知错误 |
2 | 不适合的shell 命令 |
126 | 找到了该命令但无法执行 |
127 | 没找到命令 |
128 | 无效的退出参数 |
128+x | 与linux信号x相关的严重错误 |
130 | 通过ctrl+C终止的命令 |
255 | 正常范围之外的退出状态码 |
实例
1.3.2 改变退出状态码的exit命令
退出状态码是以上一条指令的返回结果为准
使用exit命令改变退出状态码
exit
二. 判断与控制
2.1 if-then 语句
语法:
if
实例
#!/bin/bash
2.2 if-then-else 语句
语法:
if
实例
#!/bin/bash
2.3 嵌套if语句
语法:
if
2.4 条件测试-数值比较
语法:
if condition
或者
if condition
数值比较
数值比较 | 含义 |
---|---|
n1 -eq n2 | n1和n2相等,则返回true;否则返回false |
n1 -ne n2 | n1和n2不相等,则返回true;否则返回false |
n1 -gt n2 | n1大于n2,则返回true;否则返回false |
n1 -ge n2 | n1大于等于n2,则返回true;否则返回false |
n1 -lt n2 | n1小于n2,则返回true;否则返回false |
n1 -le n2 | n1小于等于n2,则返回true;否则返回false |
实例
#!/bin/bash
2.5 条件测试-字符串比较
字符串比较
字符串比较 | 含义 |
---|---|
str1 = str2 | 相等比较 |
str1 != str2 | 不相等比较 |
str1 < str2 | str1小于str2为true |
str1 > str2 | str1大于str2为true |
-n str1 | str1长度不是0则为true |
-z str1 | str1长度是0则为true |
实例
#!/bin/bash
#!/bin/bash
#!/bin/bash
#!/bin/bash
2.6 条件测试-文件比较
文件比较
文件比较 | 含义 |
---|---|
-d file | file是否为目录 |
-f file | file是否为文件 |
-e file | file是否存在 |
-r file | file是否可读 |
-w file | file是否可写 |
-x file | file是否可执行 |
-s file | file存在且非空 |
file1 -nt file2 | file1比file2新为true |
file1 -ot file2 | file1比file2旧为true |
实例
#!/bin/bash
#!/bin/bash
2.7 符合条件测试
语法:
if condition1
实例
#!/bin/bash
2.8 if-then中使用双括号
使用双括号进行算术运算
语法:
if
注:
- 双括号结构中,变量名引用可以加$,也可以不加
- 运算符前后可以有空格,也可以没有
- 可以用于if,for,while等循环控制结构中
- 多个运算符使用逗号分隔
可用运算符
运算符 | 含义 |
---|---|
value++ | 后增 |
value-- | 后减 |
++value | 先增 |
--value | 先减 |
! | 逻辑求反 |
== | 相等 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
&& | 逻辑与 |
|| | 逻辑或 |
实例
#!/bin/bash
2.9 if-then中使用双方括号
单方括号语法
if
改为双方括号语法
if
注:
- 双括号结构中,变量名引用必须加$
- [[后面必须要空格,]]前面必须有空格
2.10 case命令
语法:
case
实例:
#!/bin/bash
三. 循环与控制
3.1 for循环
循环遍历一系列特定值,然后在结构体中针对每个特定值做处理
语法:
for var in list
实例:
for循环读取列表值:
#!/bin/bash
for循环读取变量值:
#!/bin/bash
#!/bin/bash
for循环从命令执行结果读取值
#!/bin/bash
#!/bin/bash
C语言风格的for循环
#!/bin/bash
#!/bin/bash
3.2 while循环
语法:
while
实例:
#!/bin/bash
3.3 until命令
语法:
until
实例:
#!/bin/bash
3.4 break命令
实例:
#!/bin/bash
当有两层循环的时候,"break 1"跳出内循环; " break 2"跳出外循环
#!/bin/bash
#!/bin/bash
3.5 continue命令
实例:
#!/bin/bash
3.6 处理循环的输出
实例
#!/bin/bash
#!/bin/bash
linux shell编程从入门到精通pdf_SHELL脚本编程入门相关推荐
- Hadoop 从入门到精通----leo学习编程不良人视频的笔记--part01
编程不良人原版笔记 - https://blog.csdn.net/wei198621/article/details/111280555 part 01 hadoop 集群的搭建 – https:/ ...
- python web 开发从入门到精通 pdf,Python编程从入门到精通 PDF包下载
Python开发学习合集 用Python做科学计算pdf 像计算机科学家一样思考python.pdf 利用python进行数据分析.pdf Python科学计算-张若愚.pdf Python标准库Do ...
- c语言编程从入门到精通+pdf下载,编程大讲坛 C语言核心开发技术从入门到精通 陈强 pdf扫描版...
编程大讲坛 C语言核心开发技术从入门到精通由浅入深地讲解了c语言开发技术,以遵循科学合理的学习计划为主线,通过典型实例来讲解其具体使用.全书内容分为20课,其中第1-8课依次讲解了c语言概述.c语言算 ...
- 从入门到精通:Java编程基础入门教程
文章目录 1. Java基础语法概述 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 2.3 相关技术比较 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模 ...
- C++编程大师之路:从入门到精通-C++核心编程
C++核心编程 本阶段主要针对C++面向对象编程技术做详细讲解,探讨C++中的核心和精髓. 完整的c++笔记代码在公众号编程启航发送c获取 1 内存分区模型 C++程序在执行时,将内存大方向划分为4个 ...
- python爬虫从入门到精通-Python爬虫从入门到精通视频(2018新版)
原标题:Python爬虫从入门到精通视频(2018新版) Python在软件质量控制.提升开发效率.可移植性.组件集成.丰富库支持等各个方面均处于先进地位,并且随着人工智能的兴起,Python发展得越 ...
- python从入门到精通视频,python快速入门精讲
<跟老齐学Python:从入门到精通>pdf下载在线阅读全文,求百度网盘云资源 <跟老齐学Python:从入门到精通>百度网盘pdf最新全集下载:链接: ?pwd=9ib9 提 ...
- python视频教程从入门到精通全集-python从入门到精通视频(全60集)免费高速下载...
Python是一种面向对象.解释型计算机程序设计语言,由 Guido van Rossum 于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU Gene ...
- python从入门到精通怎么样-Python 从入门到精通:一个月就够了
毫无疑问,Python 是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握 Python 看似是一件十分困难的事.其实,只要掌握了科学的学习方法并制定了合理的学习计划, ...
最新文章
- 记住密码以及Android 列表的操作
- windows查看系统信息方法
- 什么是微调?什么是模型迁移?
- 《XML程序设计》要点
- 12、MySQL触发器到底是什么?
- Servlet优化之BaseServlet
- 粤桂协作消费对接活动 农业大健康·李喜贵:功能性农业合作研究
- 关于Linux的缓存内存 Cache Memory详解
- Linux常用开发环境软件-redis安装
- 【今日CS 视觉论文速览】19 Dec 2018
- oracle数据表丢失数据库,Oracle数据库数据丢失恢复的几种方法总结
- [转载] python3.5 利用openpyxl模块来处理excel表
- Info.plist信息
- python生成和校验uuid
- drools学习笔记-rule组织方式
- 《共享经济:市场设计及其应用》——…
- 数据库三范式最简理解(第一范式,第二范式,第三范式)
- 免费资源丨如何快速发表论文?八种实验套路及论文技巧告诉你
- 粗读MD-UNET: Multi-input dilated U-shape neural network for segmentation of bladder cancer
- 神仙道战斗游戏逻辑设计