1.Shell脚本概述?
答:Shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。
1.1Bash(/bin/bash)是目前大多数 Linux 版本采用的默认 Shell。
1.2 不同shell的内部指令、运行环境会有区别。
2.shell脚本应用场景
1.重复性操作
2.交互性任务
3.批量事务处理
4.服务运行状态监控
5.定时任务执行
3.Shell脚本的编写
3.1使用vim文本编辑器
3.2编写时,每条linux命令按照执行顺序依次编写(每条命令独占一行)
示例:
vim /root/first.sh #编辑一个脚本文件,一般脚本文件都以“.sh”结尾,方便辨别
如果要重新开机使文件还在并且不限路径去读取把文件加入在、/etc/profile 中
vim /etc/profile
export PATH=$PATH:/etc/name.sh #把文件加入到配置文件路径当中
4.重定向与管道操作
交互式硬件设备
标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息
5. 重定向操作
面试题:如何把两个文件合并成一个文件?
cat file1 file2 >123.txt
如何判断文件执行是否异常?
输入echo $? 如果返回值为0,无异常如果返回值为2表示异常
6.Shell变量的作用、类型
用来存放系统和用户需要使用的特定参数(值)
变量名:使用固定的名称,由系统预设或用户定义
变量值:能够根据用户设置、系统环境的变化而变化
7.变量的分类
1.自定义变量:由用户自己定义、修改和使用
2.环境变量:由系统维护,用于设置工作环境
3.只读变量:用于变量值不允许被修改的情况
4.位置变量:通过命令行给脚本程序传递参数
5.预定义变量:bash中内置的一类变量,不能
8.赋值时使用引号
双引号:允许通过$符号引用其他变量值,直接调用变量
单引号:禁止引用其他变量值, $视为普通字符,只会认为是字符
反撇号:命令替换,提取命令执行后的输出结果,``和$( )作用相同
{}可以从键盘输入内容为变量赋值分隔变量值
9.从键盘输入内容为变量赋值
在脚本中编写,在命令行实现read获取
10. 变量作用范围
10.1 默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子Shell环境时,局部变量将无法再使用。
10.2 可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。
格式1:export 变量名
格式2:export 变量名=变量值
把脚本文件加入到vim /etc/profile中就可实现在全局应用不会限制在某一目录下
11.整数变量的运算
11.1 格式:expr 变量1 运算符 变量2 [运算符 变量3]
11.2 常用运算符:
+ 加法
- 减法
\* 乘法
/ 除法 # 常用运算符
% 取余
i=$(expr 12 \* 5) #单括号expr配合算法 中间要有空格
i=$((10 * 5)) #双括号配合算法=中括号 中间空格可有可无
i=$[10 * 4]
let i=10*3 # let 配合算法 中间可直接连接不用括号
i++ 相当于 i=$[$i+1]
i-- 相当于 i=$[$i-1]
i+=2 相当于 i=$[$i+2]
12.浮点数的运算
12.1 bc命令,是一种精密运算工具,支持浮点数运算,当然整数运算也是支持的。
12.2 awk命令
13.特殊shall变量
13.1 环境变量
1. 使用 env 命令可以查看到当前工作环境下的环境变量
2.常用变量
USER 表示用户名称
HOME 表示用户的宿主目录
LANG 表示语言和字符集
PWD 表示当前所在的工作目录
PATH 表示可执行程序的默认搜索路径
PATH 路径环境变量
echo $PATH #查看当前搜索路径
PATH="$PATH:/root" #将/root目录添加到搜索路径
export PATH="$PATH:/root" #输出为全局环境变量
13.2 只读变量
1.用于变量值不允许被修改的情况
2.readonly 命令设置只读变量 但不能被删除unset用于删除变量但无法删除只读变量只能通过重启解决
readonly Product #设置为只读变量
13.3位置变量
1. 当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量。
2. $n:n为数字,$0代表命令本身,1~9代表第一个到第九个参数,十以上的参数需要使用大括号表示,比如第十个参数为 ${10}
#!/bin/bash
echo $1
echo $2
echo $1 + $2
13.4 预定义变量
$*、$@:表示命令或脚本要处理的参数。
$*:把所有参数看成以空格分隔的一个字符串整体,代表"$1 $2 $3 $4"。
$@:把各个参数加上双引号分隔成n份的参数列表,每个参数是独立 的,代表"$1" "$2" "$3" "$4"。
$0:表示当前执行的脚本或命令的名称。
$#:表示命令或脚本要处理的参数的个数。
$?:表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。
date命令用法
语法:date [选项] 显示时间格式(以“+”开头,后面接时间格式参数)
选项: -d STRING 显示STRING中指定的时间,而非系统时间。
-s STRING 将系统时间设置为STRING中指定的时间。
原文地址:https://www.jb51.cc/wenti/3286667.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。