初始shell脚本

初始shell

shell脚本大致分为四种类型

记叙型:像写作文一样,一件事一件事的写

判断型:会根据内容选项进行选择

循环型:

混合型:集结了上述的三种类型

 

面向对象:开发在开发的时候将任务当成一个整体

面向过程:开发的时候需要一步一步执行

shell是一个命令解释器,在操作系统的最外层,负责将人类使用的高级语言翻译成二进制,也可以将二进制翻译成高级语言

将人类写的命令集合,用bash(shell)去翻译给硬件执行

shell脚本应用场景

重复性操作

批量事务处理

定时任务执行

shell脚本的构成

复制代码
1 #!/bin/bash
2 #声明解释器     代表我接下来,使用什么解释器来解释,接下来的命令
3 #  “#”    表示注释信息
4 
5 cd /opt
6 mkdir test
7 #可执行的命令
8 
9 #以.sh  结尾的文件  命令会高亮
复制代码

执行脚本的三种方式

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

路径/脚本 路径:绝对/相对 但是这个需要权限

source(.)加脚本名 (不建议使用)不需要权限

会直接修改当前bash的环境

 

命令为什么可以补全?

因为 bash在补全的时候,bash会自动去 “echo $PATH”下查找,找到了会自动补全

如果想让脚本全局运行(补全),将脚本放入$PATH路径下

脚本错误

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

bash -x 脚本 bash -x会自运行一遍检查错误

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

bash -n 脚本 检查语法错误

3、逻辑错误 不会影响命令的执行,只是得到的结果不同

set -e 脚本错误会时会自动停止

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

重定向操作

重定向:改变电脑数据的输出方向 默认输出的方向是屏幕

电脑给你的回复一定会在屏幕上 我们称为:标准输出

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

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

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

shell的变量

作用:用来存放系统和用户需要使用的特定参数

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

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

变量:值可以变化的

常量:值不可以变化

变量的类型:

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

特殊变量:环境变量(env 可以看到所有的环境变量)

只读变量(只可以读,不可以该)

位置变量($1 $2....$n)

预定义变量($? $$ $* $@)

 

shell 不分 数据类型 将所有的数类型都看作字符串

变量名=变量值 (两边都没有空格)

调用变量:echo $变量名

输出变量名:unset 变量名

重新定义变量:变量名=变量值

追加变量值:变量名+=变量值

 变量名命名的要求:

  • 区分大小写
  • 只能使用数字、字母及下划线,且不能以数字开头
  • 大驼峰:StudentFirstName
  • 小驼峰:studentFirstName
  • 下划线:student_name

特殊符号:

${ } 定义了变量名的范围 

$[ ]一定不会出错

" " 变量在双引号中可以识别 (弱引用)

' ' 变量在单引号中不被识别 (强引用)

`` 反撇号 代表引用命令执行的结果 效果等于 $()

整数的运算

expr只能进行整数的运算

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

运算符:

加法:+

减法:-

乘法:\*

除法:/

取余:%

实例:

 #配置一个简单的计算机,这个计算机只能计算整数

 #运行这个脚本,根据提示输入(不能计算小数)

 #计算小数会报错

 #将脚本中的运算符改成%可以计算取余

 补充:抽数器

 #会从1到30中随机抽取一个数字

预定义变量:

系统帮你定义好了,拿来就可以使用

$?:代表上一次命令执行结果是否正确 0 代表正确 非0 代表非正确

$0:代表脚本的文件名字 (只表示当前)

$$:表示当前bash的pid

$#:代表位置参数的总个数

$*:代表返回所有参数 (将所有的参数当成一个整体返回)

$@:代表返回所有参数 (所有的参数都是一个独立的个体)

 #编辑一个js.sh的脚本 

 #执行js.sh 范围在{a..z}

试着写脚本:

脚本一:一键搭建yum仓库

复制代码
 1 #!/bin/bash
 2 mount /dev/sr0  /mnt
 3 cd /etc/yum.repos.d
 4 mkdir  bak
 5 mv *.repo  bak
 6 
 7 echo "
 8 [local]
 9 name=loacl
10 baseurl=file:///mnt
11 gpgcheck=0
12 " > local.repo
13 yum clean all   &>/dev/null
14 yum makecache   &>/dev/null
15 
16 yum install tree -y  &>/dev/null
17 set -e
复制代码

 #写脚本时一定要注意格式,语法,千万不能出错

 #运行后会自动安装tree服务

 脚本二:快速查看电脑配置(简单版)

复制代码
 1 #!/bin/bash
 2 ip=`ifconfig ens33|grep netmask|tr -s " "|cut -d " " -f3`
 3 cpu=`lscpu |grep 型号名称|cut -d"" -f2|tr -s " "`
 4 mem=`free -h|grep Mem|tr -s " "|cut -d " " -f2`
 5 disk=`lsblk|grep disk|tr -s " "|cut -d " " -f4`
 6 
 7 
 8 
 9 echo "-----------------systeminfo--------------------"
10 echo  "你的ip地址是:${ip}"
11 echo  "你的主机名是:$(hostname)"
12 echo  "你的系统版本是:$(cat /etc/redhat-release)"
13 echo  "你的CPU型号是:$cpu "
14 echo  "你的内存大小是:$mem "
15 echo  "你的磁盘大小是:$disk "
复制代码

 

脚本三:快速给硬盘分区

 为服务器添加硬盘

1 #!/bin/bash
2 read  -p  "请输入你要分区的设备:"  disk
3 
4 read  -p  "请输入你要分区的大小:"  num
5 
6 echo  -e  "n\n\n\n\n${num}\nw\n " | fdisk ${disk}

 #准备为sdc盘进行分区

 #执行过后可以使用lsblk查看是否成功

 

posted @   打开方式不对  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示