目录
5:let i++ , let i-- , let i+=N
2:环境变量配置文件/etc/profile,每个用户独立配置文件(~/.bash_profile)
一、shell的概述
1:什么是shell
与内核沟通的界面、应用程序等等。比如你要播放音乐,你的计算机通过你在shell输入的打开音乐的命令,shell在高速操作系统的内核用户希望打开音乐,内核在通过cpu调度、内存管理、磁盘输入输出等工作,将硬件调动,这时硬件声卡才会工作,硬件才是实际的工作者
shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当一个“命令解释器”的角色,负责接收用户输入的操作指令并进行解释,将需要执行的操作传递给内核执行,并输出执行结果
2:LINUX中有哪些shell
cat /etc/shells 中含有linux所包含的shell
bash (/bin/bash) 是目前大多数linux版本采用的默认shell
bash:基准于GNU的框架下发展出的shell
csh:语法有点类似于c语言的shell。
tcsh:整合csh,提供更多功能
nologin:奇怪的shell,这个shell可以让用户无法登录主机
3:shell脚本的作用
自动化运维 |
批量化重复操作可以编写脚本结合计划任务自动周期运行 |
减轻管理员工作量 |
提高处理文本文件的速度 |
避免配置出错 |
4:shell脚本的构成
以.sh结尾的一般都是shell脚本
1:脚本申请解释器:
#!/bin/bash
#!/usr/bin/python
#!/usr/bin/expect
2:注释信息
以#开头的语句表示为注释信息,被注释的语句在运行脚本时不回被执行
3:可执行语句
比如echo命令,用于输出“ ”之间的字符串
5:shell脚本的执行
1:方法一:
指定路径的命令,要求文件必须有x权限
指定相对路径:./sly.sh
指定绝对路径:
2:方法二:
指定shell来解释脚本,不要求文件必须有x权限
sh 脚本路径:sh sly.sh或者bash .sly.sh
source 脚本路径:. sly.sh 或者source sly.sh
Source 或者. 运行当前shell环境 里面的代码
二、管道符号 |
1:定义
将管道符号 ” | “ 左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道
XXX | 如果管道符号右边的命令一定需要执行对象的命令,则管道符号 后面要有xargs命令来传递执行参数
三、重定向 和重定向操作
交互式硬件设备
类型 | 设备文件 | 文件描述序号 | 默认设备 |
标准输入 | /dev/stdin | 0 | 键盘 |
标准输出 | /dev/stdout | 1 | 显示器 |
标准错误输出 | /dev/stderr | 2 | 显示器 |
重定向操作
类型 | 操作符 | 用途 |
重定向输入 | < | 从指定的文件读取数据 |
重定向输出 | > | 将标准输出结果 保存到指定的文件,并且覆盖原有内容 |
>> | 将标准输出结果 追加到指定的文件的尾部,不覆盖原有内容 | |
标准错误输出 | 2> | 将错误信息保存到指定的文件,并且覆盖原有内容 |
2>> | 将错误信息追加到指定的文件的尾部,不覆盖原有内容 | |
混合输出 | &> | 将标准输出、标准错误保存到同一文件中 |
2>&1 | 将标准错误输出重定向到标准输出 |
注意:一定要关闭核心安全防护 setenforce 0 否则可能会影响此命令执行
ls -lh > log.txt 2>&1 = ls -lh &> log.txt
本来1---》屏幕(1指向屏幕)
执行>log后,
四、自定义变量
1:局部变量
变量名=变量值
变量名字以字母或者下划线开头,区分大小写,建议全大写
read 获取标准输入的内容给 变量
2:全局变量
export 变量名=变量值
3:整数变量的运算
1:expr 数值或数量 运算符 数值或变量
加法运算 | + |
减法运算 | - |
乘法运算 | \* |
除法运算 | / |
求模或者取余运算 | % |
2:echo $((数值 运算符 数值))
3:$[数值 运算符 数值]
4:let 变量=数值运算符数值
5:let i++ , let i-- , let i+=N
4:小数点运算表达式
1:echo ”浮点运算表达式“ | bc
2:awk ‘BEGIN {print 浮点运算表达式}’
五、特殊变量
1:环境变量
1:定义
环境变量由系统提前创建,用来设置用户的工作环境
使用env命令可以查看当前工作环境的环境变量
2:环境变量配置文件/etc/profile,每个用户独立配置文件(~/.bash_profile)
2:只读变量readonly 命令设置只读变量
readonly 命令用于定义只读shell变量和shell函数
readonly 不能添加 只能重启
删除变量 unset
3:位置变量
1:定义:
当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量。
$n: n为数字,$0代表命令本身,$1- $9代表带一个到第九个参数,十以上的参数需要使用大括号表示,比如第十个参数为${10}
4:预定义变量
1:$*和$@:表示命令或脚本要处理的参数
2:$*和$@加双引号
“$*”:把所有参数堪称以空格分隔的一个字符串整体(单字符串)返回,代表“$1 $2 $3 $4”
”$@“:把各个参数加上双引号分隔成n份的参数列表,每个参数作为一个字符穿返回,达标“$!"“$2”
"$3"
3:$0:表示当前执行的脚本或命令的名称。
4:$#:表示命令或者脚本要处理的参数的个数
5:$?:表示前一条命令或脚本执行后的返回状态码, 返回值为0表示执行正确,返回任何非0值表示执行出现异常。也常被用于shell脚本中return退出函数并返回的退出值
5:date日期
1:date 显示本机日期
2:date +“%Y%m%d”显示年月日
3:上一天date -d "-1 day" +"%Y%m%d"
4:上个月的一号date -d "last-month" +"%Y%m01"
六:总结
shell的作用
shell脚本的编写规范
数值变量的运算
管道符号| 重定向
自定义变量复制的单引号、双引号、反撇号的使用方法