Linux脚本入门基础概念

编程语言类型

面向过程的语言:开发的时候需要一步一步执行,如C语言,shell

面向对象的语言:开发的时候将任务当成一个整体,如java,python,go等

一.了解shell脚本

1. 脚本概念介绍

① shell的作用

将人类的高级语言翻译成二进制,也可将二进制转换成人类的高级语言。

② 脚本是什么?

脚本是命令的集合,然后用bash(shell)去翻译给硬件执行。

脚本的本质是程序。

小tips:

如果想让脚本全局运行(就是可以用tab键补全,需要有执行权限),需要将脚本放入$PATH路径下

补全功能是由bash补全的

③ shell脚本应用场景

Ⅰ 重复性任务

Ⅱ 批量事务处理

Ⅲ 定时任务执行

Ⅳ 交互性任务

Ⅴ 服务运行监控

④ 脚本的组成

Ⅰ 声明解释器:第一行开头 #!/bin/bash,表示此行一下的代码是通过/bin/bash程序来解释执行,表示用什么语法写的。还有其他的如 #!/bin/python

Ⅱ 注释信息:以#开头的语句表示为注释信息

Ⅲ 可执行语句:命令

2.脚本执行及逻辑

① 执行脚本

Ⅰ 命令:bash 脚本名

    直接调用shell解释器,加上脚本的名字。不需要加上权限

Ⅱ  命令:路径/脚本

    路径:绝对相对    但是这种需要执行权限

Ⅲ 命令:source 或(.) 命令

    这个不建议使用,会改变当前环境,相当于在这个桌面运行。

    如果用bash执行,相当于另开一个桌面运行,不会改变当前环境。

② 脚本执行逻辑

Ⅰ 顺序执行:从上到下顺序执行

Ⅱ 选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行。

Ⅲ 循环执行

③ 脚本错误

Ⅰ  命令错误,不会影响接下来的命令执行,但本条命令不会执行

      bash -x 脚本:模拟执行,会告诉你哪边错误

Ⅱ  语法错误,直接影响脚本无法正常运行

      bash -n 脚本:检查语法错误

Ⅲ  逻辑错误。

      bash -x  脚本

小tips:加一些脚本的安全选项

            set  -e:一旦出错,立即停止。

            set  -u:变量不存在不执行

二. 重定向与管道符

1. 标准输入与输出

类型 设备文件 文件描述编号 默认设备
标准输入 /dev/stdin 0 键盘
标准输出 /dev/stdout 1 显示器
标准错误输出 /dev/stderr 2 显示器

交互式硬件设备

     标准输入:从该设备接收用户输入的数据

     标准输出:通过该设备向用户输出数据

     标准错误:通过该设备报告执行出错信息

举例说明:

发了一条指令给电脑操作,电脑会回复结果给你,结果一定是显示在电脑屏幕上。我们称为:标准输出

如果电脑没有正确回复,我们称为错误输出

我们通过键盘鼠标,扫描仪话筒等设备输入给电脑的指令,我们称为标准输入

2. 了解重定向

类型 操作符 用途
重定向输入 < 从指定的文件读取数据,而不是从键盘输入
重定向输出 1> 将输出结果保存到指定的文件(覆盖原有内容)
>> 将输出结果追加到指定的文件尾部
标准错误输出 2> 将错误信息保存到指定的文件(覆盖原有内容)
2>> 标准错误输出结果追加到指定的文件尾部
混合输出 &>无论对错都可以重定向 将标准输出、标准错误的内容保存到同一个文件中

tips: 简单的理解,就是此符号 >  开口一方是内容,箭头一方是要文件。开口边的内容输入到箭头方

几种用法
例1 :stdin用法

命令:passwd   --stdin  user123  <  passwd.txt   ,用passwd.txt里面的密码来修改用户user123的密码

Linux脚本入门基础概念_第1张图片

一般来说,内容在左边,输入到右边的文件里面,但是这里要输入的内容在右边,方向反了,所以命令后面要加上--stdin(标准输入)。

如果不加,反过来,就是如下情况

例2:标准错误输出用法:2> 

例3:&的用法

与例2效果一样,此处的&相当于分隔符,但是必须要加

不加就会创建一个1文件夹,如下图

Linux脚本入门基础概念_第2张图片

&另一种用法,混合输入,不分对错

ls  /opt/ddd  &> /opt/qwe

ls /opt/ddd   >&  /opt/qwe

两条命令效果一样。

3. 管道符 |

将前一个命令的结果,当做后一个命令的处理对象。单向传递,像管道一样。

Linux脚本入门基础概念_第3张图片

三. 变量

变量:值可以变化的

常量:值不可以变化

shell不分数据类型,统一把所有的数类型都看作字符串。

1. 设置变量

变量名=变量值 两边没有空格
调用变量 echo  $变量名
删除变量(一般不用) unset  变量名
重新定义变量 变量名=变量值
追加变量值 变量名+=变量值

例:a=20   定义变量

       echo $a:调用变量

随机数:

$[RANDOM%30]:0-29内的随机数

$[RANDOM%30+1]: 1-30内的随机数  

2. 常见shell变量的类型

自定义变量 由用户自己定义,修改和使用
预定义变量

bash中内置的一类变量,是bash维护的

只读变量 只可以读不可以改
位置变量 通过命令行给脚本传递参数,$1 $2…${10}
环境变量 env,看到所有环境的变量。是系统维护的

①. 环境变量配置文件:

/etc/profile

②. 预定义变量

$? 代表上一个命令执行结果是否正确,0代表正确,非0代表不正确
$0 代表当前脚本的文件名字
$$ 代表当前bash 的pid号
$# 代表位置参数的总个数
$* 代表返回所有参数,所有参数当成一个整体返回
$@ 代表返回所有参数,每一个参数都是一个独立的个体返回

位置参数图例:

Linux脚本入门基础概念_第4张图片

③ 变量名中的特殊符号

符号 效果
${ } 定义的变量名的范围,用${ }一定不会错
“  "  双引号 变量在双引号中可以识别,是弱引用
'  '  单引号 变量在单引号中不被识别,强引用
` ` 反撇号 代表引用命令执行的结果。效果等于$( )

④ 整数的运算

Ⅰ.  expr  只能进行整数的运算

格式:expr 变量1 运算符 变量2 [运算符 变量3]

运算符:

加法 +
减法 -
乘法 \* (不能有空格)
除法 /
取余 (取模) %

例:Linux脚本入门基础概念_第5张图片

Ⅱ. bc  计算器

bc支持小数运算

Ⅲ. let 用法

let:将变量运算结果赋值给另一个变量

Linux脚本入门基础概念_第6张图片

i++ i=$[  $i + 1  ]
i-- i=$[ $i - 1 ]
i+=2 i=$[  $i + 2  ]

let  i++  :先赋值再加

Linux脚本入门基础概念_第7张图片

let  ++i  :先加再赋值

Linux脚本入门基础概念_第8张图片

3. read -p & export  变量

read  -p:交互

Linux脚本入门基础概念_第9张图片

export 变量:新bash知道前面变量内容,让局部变量变成全局变量

你可能感兴趣的:(linux,运维,服务器)