初始shell脚本
初始shell
shell脚本大致分为四种类型
记叙型:像写作文一样,一件事一件事的写
判断型:会根据内容选项进行选择
循环型:
混合型:集结了上述的三种类型
面向过程:开发的时候需要一步一步执行
shell是一个命令解释器,在操作系统的最外层,负责将人类使用的高级语言翻译成二进制,也可以将二进制翻译成高级语言
将人类写的命令集合,用bash(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”下查找,找到了会自动补全
1、命令错误 不会影响接下来的命令执行 但本条命令不执行
bash -x 脚本 bash -x会自运行一遍检查错误
bash -n 脚本 检查语法错误
3、逻辑错误 不会影响命令的执行,只是得到的结果不同
set -e 脚本错误会时会自动停止
set -u 变量不存在不让执行
电脑给你的回复一定会在屏幕上 我们称为:标准输出
如果电脑没有正确回复 我们称为:错误输出
我们通过键盘鼠标扫描仪话筒等设备输入给电脑的指令
类型 | 操作符 | 解释 |
重定向输入 | < | 从指定的文件读取数据,而不是从键盘输入 |
重定向输出 | > | 将输出结果保存到指定的文件(覆盖原有内容) |
>> | 将输出结果追加到指定的文件尾部 | |
标准错误输出 | 2> | 将错误信息保存到指定的文件(覆盖原有内容) |
2>> | 将错误信息追加到指定的文件中 | |
混合输出 | &> | 将标准输出、错误输出的内容保存到同一个文件中 |
shell的变量
常量:值不可以变化
shell 不分 数据类型 将所有的数类型都看作字符串
变量名=变量值 (两边都没有空格)
调用变量:echo $变量名
输出变量名:unset 变量名
重新定义变量:变量名=变量值
追加变量值:
变量名命名的要求:
- 区分大小写
- 只能使用数字、字母及下划线,且不能以数字开头
- 大驼峰:StudentFirstName
- 小驼峰:studentFirstName
- 下划线:student_name
特殊符号:
" " 变量在双引号中可以识别 (弱引用)
' ' 变量在单引号中不被识别 (强引用)
取余:%
实例:
#配置一个简单的计算机,这个计算机只能计算整数
#运行这个脚本,根据提示输入(不能计算小数)
#计算小数会报错
#将脚本中的运算符改成%可以计算取余
补充:抽数器
#会从1到30中随机抽取一个数字
预定义变量:
系统帮你定义好了,拿来就可以使用
$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查看是否成功
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~