一. SHELL入门

1.1 变量

1.1.1 变量名规范

  • 变量是由任何字母、数字、下划线组成的字符串,且不能以数字开头。
  • 区分字母大小写
  • 变量、等号、值中间不能出现任何空格

实例

注:$var1+$var2并不能实现相加,$var1,$var2默认作为字符串来处理

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

&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;被当作了重定向,需要进行转义
#!/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脚本编程入门相关推荐

  1. Hadoop 从入门到精通----leo学习编程不良人视频的笔记--part01

    编程不良人原版笔记 - https://blog.csdn.net/wei198621/article/details/111280555 part 01 hadoop 集群的搭建 – https:/ ...

  2. python web 开发从入门到精通 pdf,Python编程从入门到精通 PDF包下载

    Python开发学习合集 用Python做科学计算pdf 像计算机科学家一样思考python.pdf 利用python进行数据分析.pdf Python科学计算-张若愚.pdf Python标准库Do ...

  3. c语言编程从入门到精通+pdf下载,编程大讲坛 C语言核心开发技术从入门到精通 陈强 pdf扫描版...

    编程大讲坛 C语言核心开发技术从入门到精通由浅入深地讲解了c语言开发技术,以遵循科学合理的学习计划为主线,通过典型实例来讲解其具体使用.全书内容分为20课,其中第1-8课依次讲解了c语言概述.c语言算 ...

  4. 从入门到精通:Java编程基础入门教程

    文章目录 1. Java基础语法概述 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 2.3 相关技术比较 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模 ...

  5. C++编程大师之路:从入门到精通-C++核心编程

    C++核心编程 本阶段主要针对C++面向对象编程技术做详细讲解,探讨C++中的核心和精髓. 完整的c++笔记代码在公众号编程启航发送c获取 1 内存分区模型 C++程序在执行时,将内存大方向划分为4个 ...

  6. python爬虫从入门到精通-Python爬虫从入门到精通视频(2018新版)

    原标题:Python爬虫从入门到精通视频(2018新版) Python在软件质量控制.提升开发效率.可移植性.组件集成.丰富库支持等各个方面均处于先进地位,并且随着人工智能的兴起,Python发展得越 ...

  7. python从入门到精通视频,python快速入门精讲

    <跟老齐学Python:从入门到精通>pdf下载在线阅读全文,求百度网盘云资源 <跟老齐学Python:从入门到精通>百度网盘pdf最新全集下载:链接: ?pwd=9ib9 提 ...

  8. python视频教程从入门到精通全集-python从入门到精通视频(全60集)免费高速下载...

    Python是一种面向对象.解释型计算机程序设计语言,由 Guido van Rossum 于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU Gene ...

  9. python从入门到精通怎么样-Python 从入门到精通:一个月就够了

    毫无疑问,Python 是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握 Python 看似是一件十分困难的事.其实,只要掌握了科学的学习方法并制定了合理的学习计划, ...

最新文章

  1. 记住密码以及Android 列表的操作
  2. windows查看系统信息方法
  3. 什么是微调?什么是模型迁移?
  4. 《XML程序设计》要点
  5. 12、MySQL触发器到底是什么?
  6. Servlet优化之BaseServlet
  7. 粤桂协作消费对接活动 农业大健康·李喜贵:功能性农业合作研究
  8. 关于Linux的缓存内存 Cache Memory详解
  9. Linux常用开发环境软件-redis安装
  10. 【今日CS 视觉论文速览】19 Dec 2018
  11. oracle数据表丢失数据库,Oracle数据库数据丢失恢复的几种方法总结
  12. [转载] python3.5 利用openpyxl模块来处理excel表
  13. Info.plist信息
  14. python生成和校验uuid
  15. drools学习笔记-rule组织方式
  16. 《共享经济:市场设计及其应用》——…
  17. 数据库三范式最简理解(第一范式,第二范式,第三范式)
  18. 免费资源丨如何快速发表论文?八种实验套路及论文技巧告诉你
  19. 粗读MD-UNET: Multi-input dilated U-shape neural network for segmentation of bladder cancer
  20. 神仙道战斗游戏逻辑设计

热门文章

  1. WebGIS学习资源推荐(包含学习路线、软件和数据资源推荐)
  2. 用NCBI的工具Batch Entrez批量下载序列
  3. JS-实现上一题下一题切换功能
  4. 自动控制原理(5)——结构图的绘制
  5. 【阅读笔记】c++ Primer Plus——第八章
  6. JavaScript 学习笔记(第三天)
  7. 多目标应用:多目标蜣螂优化算法求解多旅行商问题(Multiple Traveling Salesman Problem, MTSP)
  8. 阿里云腾讯云服务器安装oracle11g
  9. gpu服务器性能测试用例,WebGPU性能测试分析
  10. 队列的定义及其基本操作