目录
一.shell脚本的概述
2.1 shell的作用
什么是shell?
- 就是与内核沟通的界面、应用程序等等。比如你要播放音乐,你的计算机通过你在shel1输入的打开音乐的命令,shell在
告诉操作系统的内核用户希望打开音乐,内核在通过cpu调度、内存管理、磁盘输入输出等工作,将硬件调动,这时硬件声卡才会工作,硬件才是灾
际的工作者 - Shell(壳程序)是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个""命令解释器"的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。
cat /etc/shells 查看可用shell程序
注:bash (/bin/bash)是目前大多数linux版本中默认的shell
三. shell脚本的作用
shell脚本的作用
- 自动化运维
- 批量化重复操作可以编写脚本结合计划任务自动周期运行
- 减轻管理员工作量
- 提高处理文本文件的速度
- 避免配置出错
补充:计算机语言分为面向对象与面向过程
面向对象:JAVA PYTHON C++ GO
面向过程:C shell
强类型语言: JAVA C++ C GO 编译型语言。执行前要先编译,运行速度快效率高
弱类型语言:PYTHON shell PHP 解释性语言,不需要编译即可直接执行。常用
于做脚本
3.1 编写第一个shell脚本
3.1.1 Shell 脚本的构成:
- **脚本申明(解释器):若第一行为"#!/bin/bash",表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。**还有其它类型的解释器,比如#!/usr/bin/python、# !/usr/bin/expect。
- 注释信息:以"#"开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。
- 可执行语句:比如echo命令,用于输出" "之间的字符串
例如:
3.1.2 脚本的执行方式
1. 需要加执行权限的方式
使用绝对或相对路径来执行脚本 需要添加执行权限
2. 不添加执行权限执行
使用bash或者sh来执行脚本
3. source或 . 来执行脚本,此执行方式也不需要权限(不建议使用)
注意
绝对路径/相对路径 ,bash/sh 执行脚本不会影响当前环境 ,他会先打开一个子bash环境执行,执行完之后再次回到原来的bash环境中、
source和. 执行脚本时 ,会影响当前的环境,他会在当前shell环境中运行(会影响当前所在目录和变量的值灯因素,不建议使用)
三. 重定向与管道符操作
3.2 重定向操作
< 重定向输入
> 重定向输出
>> 重定向追加
2> 错误内容的输出
2>> 将错误的内容追加到文件中
&> 混合输出,将标准输出,标准错误的内容保存到同一个文件
ls /opt /xxxxx 1>txt 2>&1
3.2 管道操作符号
四. shell的变量的作用,类型
4.1 定义变量
变量名要以字母或下划线开头 ,但不能以数字或其他符号开头
4.2 命名的规则
1. { } 定义变量范围,确定一个变量的长度
2. ’ ’ 在单引号中不识别变量
3. " " 双引号识别变量,并保留格式
4. `` 反撇号等于$( ) 调用命令的执行的输出结果
4.3 全局变量设置
但是我们再命令行输出export他只是临时的,当我们重启后就消失了,所以我们需要再/etc/profile中修改他的永久全局变量
4.4 整数变量的运算
4.5 特殊的环境变量
若我想系统能够自动设别到我的脚本文件此时就可以将他们加入到我都PATH环境变量中
方法一:
创建软连接指向PATH环境变量的目录中
方法二:
创建新的PATH环境变量
编辑/etc/profile 全局环境变量
4.6 只读变量与删除变量
4.7 位置变量
$0 代表脚本本身
$1 - $9 代表第几个位置参数
4.8 预定义变量
$@ 将所有位置参数看作独立的个体返回
$* 将所有位置参数看作一个整体返回
$0 查看当前脚本的名称
$# 返回位置参数的总个数
$? 判断上个命令是否执行成功,成功返回0 其他则为失败
当 $@ 和 $ 有双引号时区别就能看出来了*
当它没有双引号时
当有双引号时
$? 判断输入的命令是否正确执行