Linux------shell编程规范与变量

Linux------shell编程规范与变量

一.Shell脚本的概述

1.Shell脚本的概念:

1)shell脚本是将要执行的命令按顺序保存到一个文本文件

2)给该文件可执行的权限,便可以运行(+x)

3)结合各种shell控制语句完成更加复杂的操作

2.Shell脚本应用场景:

1)重复性操作

2)批量事务处理

3)自动化运维

4)服务运行状态监控

5)定时任务执行

3.shell的作用:

1)命令解析器,介于系统内核和用户之间,负责解释命令行

2)登录后默认使用的shell程序,一般为/bin/bash,不同shell的内部指令、运行环境等会有所区别:

Linux------shell编程规范与变量_第1张图片

5.执行脚本的方式

1)./ -----需要添加权限,不区分颜色,不改变路径

2)sh ------不需要权限,不区分颜色,不改变路径

3)source-----不需要权限,区分颜色,但会改变路径

Linux------shell编程规范与变量_第2张图片

二.管道符号(|)

1.命令格式:

管道操作符号"|",命令格式:cmd1 | cmd2 | …

2.管道操作为不同命令之间的协同提供了一种机制,位于管道符左侧的命令输出结果,将作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。

3.在shell脚本应用中,管道符通常用来过滤所需要的关键信息。结合awk(分隔符)作为进一步的过滤。
Linux------shell编程规范与变量_第3张图片

三.重定向

交互式硬件设备:

标准输入:从该设备接收用户输入的数据----设备文件:/dev/stdin----文件描述编号:0----默认设备:键盘

标准输出:通过该设备向用户输出数据----设备文件:/dev/stdout----文件描述编号:1----默认设备:显示器

标准错误输出:通过该设备报告执行出错信息----设备文件:/dev/stderr----文件描述编号:2----默认设备:显示器

重定向操作:

重定向输入;操作符:<;用途:从指定的文件读取数据,而不是从键盘输入

重定向输出;操作符:>;用途:将输出的结果保存到指定的文件(覆盖原有内容)

重定向输出;操作符:>;用途:将输出的结果追加到指定的文件(不覆盖原有内容)

标准错误输出;操作符:2>;用途:将错误信息保存到指定文件(覆盖原有内容)

标准错误输出;操作符:2>>;用途:将错误信息追加到指定的文件中(不覆盖原有内容)

混合输出;操作符:&>>;用途:将标准输出、标准错误的内容保存到同一个文件中

四.自定义变量

1.变量的作用:

为灵活管理Linux系统提供特定的参数,有两层意思

1)变量名:使用固定的名称,由系统预设定或者用户自定义

2)变量值:能够根据用户设置、系统环境的变化而变化

2.变量的类型:

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

环境变量:由维护系统,用于设置环境

位置变量:通过命令行给脚本程序传递参数

预定义变量:B爱上内置的一类变量,不能直接修改

3.查看变量:(使用echo)

Linux------shell编程规范与变量_第4张图片

双引号:允许通过$符号引用其他变量值

单引号:禁止引用其他变量值,$视为普通字符

反撇号:命令替换,提取命令执行之后的输出结果

Linux------shell编程规范与变量_第5张图片

read:从键盘输入内容为变量赋值,格式为:read [-p “提示信息”] 变量名:

Linux------shell编程规范与变量_第6张图片

在这里插入图片描述

4.作用范围:

设置变量的作用范围:

全局变量和局部变量;局部变量只在当前的shell中有效,而全局变量,在进入其他的shell环境中仍然有效

为了使用户定义的变量能在变为全局变量,可以使用export将指定的变量导出为”全局变量”,可以同时指定多个变量名作为参数(不需要使用$符号),变量名之间用空格隔开。

5.运算:

1.整数变量的运算格式为:expr $变量1 运算符 $变量2 运算符 $变量3 …

2.常用的运算符:+,-,*(乘法运算符),/(除法运算法),%(取余)
Linux------shell编程规范与变量_第7张图片

五.特殊变量

环境变量:

是由系统提前创建,用来设置用户的工作环境,配置文件由/etc/profile,/root/.bash_profile

常见的环境变量由:

PWD表示当前所在的工作目录,PATH表示命令搜索路径,USER表示用户名称,LANG表示语言和字符集,HOME表示用户的宿主目录。

位置变量:

表示为$n,n为1~9之间的数字,其中$0表示当前执行的进程或程序名

预定义变量:

$#:命令行中位置变量的个数

$*:命令行中输入变量的具体数值

$?:上一行命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错

$0:当前执行的进程/程序名
Linux------shell编程规范与变量_第8张图片
Linux------shell编程规范与变量_第9张图片

你可能感兴趣的:(LINUX)