Linux--shell编程原理--03
一、编程原理:
1、编程介绍:
计算机只能识别二进制指令
程序=指令+数据
根据服务的重心不同,我们分为面向过程编程,面向对象编程;
a) 面向过程:侧重于指令的编程语言
b) 面向对象:侧重于数据的编程语言
2、编程语言的分类:
高级语言、超高级语言需要翻译成计算机可读的语言(二级制指令)
a) 解释型:逐行翻译,逐行执行(解释一行、执行一行)shell、python
b) 编译型:一次编译,全部执行 C、C++、C#
3、编程语言的执行方式:
a) 顺序执行 : 一行一行的执行
b) 循环执行 : for、while、until
c) 选择执行(分支): if、case
二、shell脚本语言介绍:
1、优点:
调用os(操作系统)的命令行,来实现所有功能;
2、缺点:
没有库调用(区分python)
3、shell脚本包括
a) 命令**很重要**
b) 变量(全局变量、局部变量、本地变量、传参)
c) 逻辑关系
4、shell的第一句话: #!/bin/bash --- 定义脚本解释器
/etc/shells – 查看当前系统支持的shell程序
echo $SHELL – 查看当前会话的shell程序
/etc/passwd – 制定了用户默认支持的shell程序(/sbin/nologin)
5、shell的执行:
a) bash命令来执行脚本:
-n 查看shell脚本的逻辑错误(注意单词的错误检查不出来)
-x 逐行显示执行的脚本程序(方便排错)
b) 授权: chmod u+x filename.sh 使用全路径执行脚本即可
三、变量:一段被命名的内存空间
1、环境变量---关于命令历史的变量:PATH是环境变量的一种
---环境变量查看:env
---查看更详细的环境变量:set
2、局部变量 declare命令 ---定义变量类型
3、本地变量 local 在函数中使用
4、变量类型:
a) 数值型:
整型 int
浮点型 float
布尔型 boolean
b) 字符串:
普通字符及字符串
数组
5、编程语言的分类:
强类型语言: --- 数值必须被定义变量类型,才能进行处理或运算
弱类型语言: --- 编程语言可以自动识别变量类型
【*多态*】一种数值具有多个属性,而最后使用的属性取决于和他进行运算的数据
6、传参:
$? :代表上一条命令的执行状态 0表示正确 1~255表示错误
$1、$2 … ${10}:执行脚本命令后面传入脚本的数据,以空格为分隔符
$# :统计传参数量 ${$#}
$* :表示所有的传参,以字符串的形式进行输出
$@ :表示所有的传参,将所有的传参以列表的形式进行输出
7、定义变量的格式:
NAME=VALUE
通过declare定义变量类型
declare -i a=10 定义变量a为整型,value为10
declare -a b 定义数组
8、变量命名:
a) 下划线的方式指定变量名称
b) 使用驼峰命名方式
四、test文件测试、条件判断
在脚本中,我们需要进行语句分支;就是做判断;
判断就是使用test命令来实现
1、使用格式:
a) test [option] file
b) [条件语句]
2、常见的test选项:
a) 数值比较选项:
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
b) 判断选项:
-e 判读文件是否存在
-f 判断是否为普通文件
-d 判断是否为目录文件
-L 判断是否为链接文件
-r -w -x 判断是否具有 读 写 执行
c) 关联选项:
-o 或
-a 与
! 非
d) 字符串判断:
= 判断两边的字符串是否相等
!= 不等于
-z 判断字符串是否存在,存在为真,不存在为假
-n 和-z相反 存在为假,不存在为真
五、逻辑运算
与 &&
或 ||
非 !=
例子: [ $? -eq 0] && exit 0 || exit 1
六、算术运算
let 1+1
expr 1*1
$[ $1 + 10 ]
$(($1/$2))
Linux--shell编程原理--03的更多相关文章
- Linux Shell编程与编辑器使用详解
<Linux Shell编程与编辑器使用详解> 基本信息 作者: 刘丽霞 杨宇 出版社:电子工业出版社 ISBN:9787121207174 上架时间:2013-7-22 出版日期:201 ...
- linux —— shell 编程(文本处理)
导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...
- linux —— shell 编程(编程语法)
导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 再识变量 函数 条件语句 循环语句 ...
- linux shell编程总结
linux shell编程总结 本周学习了unix/linux shell编程,参考的是<LINUX与UNIX Shell 编程指南>,David Tansley著:徐焱,张春萌等译,由机 ...
- Linux Shell编程参考大全
本文记录Linux Shell编程中常用基本知识,方便快速入门以及查询使用. 本文主要分为以下几个部分: 一.Shell中的变量 任何编程语言中,有关变量的定义,作用范围,赋值等都是最最基础的知识. ...
- Linux Shell编程中的几个特殊符号命令 & 、&& 、 ||
https://blog.csdn.net/hack8/article/details/39672145 Linux Shell编程中的几个特殊符号命令 & .&& . || ...
- linux shell 编程参考
#!/bin/bash my_fun() { echo "$#" } echo 'the number of parameter in "$@" is '$(m ...
- linux shell编程,先等10秒再判断是否有进程存在,存在就再等10秒再杀了进程才运行
linux shell编程,先等10秒再判断是否有进程存在,存在就再等10秒再杀了进程才运行 crontab每分钟执行一次,但5秒以上才有更新数据,有时候一分钟可能跑不完上一个进程,需要先等10秒再判 ...
- 一文学完Linux Shell编程,比书都好懂
一. Shell 编程 1. 简介 Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务. Shell 既是一种命令语言,又是一种程序设计语言. Shell scr ...
- 前端学习 linux —— shell 编程
前端学习 linux - shell 编程 shell 原意是"外壳",与 kernel(内核)相对应,比喻内核外的一层,是用户和内核沟通的桥梁.shell 有很多种,国内通常使用 ...
随机推荐
- c++最大公约数
C++辗转相除法求出最大公因数 样例输入 6 9 样例输出 3 程序 #include <stdio.h> using namespace std; int gcd(int m,int n ...
- Linux命令学习-cp命令
Linux中,cp命令的全称是copy,主要作用是复制文件或文件夹,类似于Windows下的复制功能. 假设当前处于wintest用户的主目录,路径为 /home/wintest ,存在文件夹test ...
- 《Graph Neural Networks: A Review of Methods and Applications》阅读笔记
本文是对文献 <Graph Neural Networks: A Review of Methods and Applications> 的内容总结,详细内容请参照原文. 引言 大量的学习 ...
- NOIP2018普及T4暨洛谷P5018 对称二叉树题解
题目链接:https://www.luogu.org/problemnew/show/P5018 花絮:这道题真的比历年的t4都简单的多呀,而且本蒟蒻做得出t4做不出t3呜呜呜... 这道题可以是一只 ...
- Python学习1——Python中的 split() 函数
函数:split() Python中有split()和os.path.split()两个函数,此处简单介绍split()函数:split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的 ...
- python迭代器-迭代器取值-for循环-生成器-yield-生成器表达式-常用内置方法-面向过程编程-05
迭代器 迭代器 迭代: # 更新换代(其实也是重复)的过程,每一次的迭代都必须基于上一次的结果(上一次与这一次之间必须是有关系的) 迭代器: # 迭代取值的工具 为什么用迭代器: # 迭代器提供了一种 ...
- 《VR入门系列教程》之6---VR硬件介绍及DK1
第二章 VR硬件介绍 本章主要介绍当前比较流行的消费版VR设备,包括VR头显以及应用运行的PC和手机平台. 即使是在这工业高速发展的时代,一些大厂(比如Facebook的Oculus ...
- MySQL常用工具、日志及读写分离
MySQL常用工具.日志及读写分离 1.MySQL中常用工具 1.1 mysql 1.1.1连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 mys ...
- flex布局知识总结
flex-direction:决定主轴的排列方向flex-wrap:项目都排列在一条轴线上,若排不下,如何换行flex-flow=flex-direction+flex-wrap align-item ...
- Spring 整合 ibatis
是的,真的是那个不好用的ibatis,不是好用的mybatis. 由于工作需要用到ibatis需要自己搭建环境,遇到了不少的坑,做一下记录. 一.环境配置 Maven JDK1.6 (非常重要,使用S ...