Linux Shell 脚本零基础实操笔记

Linux Shell 脚本零基础实操笔记
一、前言本文整合Shell脚本入门全部核心知识点全程基于Xshell连接Linux虚拟机实操完整记录概念、命令、参数、运行结果与报错解决方案搭建完整的Shell学习知识体系所有代码均可直接复制复现。二、整体知识框架总述本次学习一共七大核心内容Shell脚本文件概念、vim脚本编辑操作、chmod文件权限控制、脚本三种运行方式、Shell变量使用、wc文件统计命令、数学运算实现方案、命令退出状态码$?。下文每个模块会分别讲解概念、命令用途、核心参数、实操代码与运行效果。三、分模块知识点与Xshell实操演示模块1Shell脚本基础与vim编辑器操作概念理解后缀为.sh的文件称为Shell脚本作用是批量存放多条Linux命令Shell会从上到下按顺序自动执行文件内所有指令。脚本第一行必须固定填写#!/bin/bash用来指定解析脚本的解释器。核心命令与操作说明创建、打开、编辑脚本使用vim工具基础创建命令vimtest.sh执行这条命令时如果当前目录不存在test.sh会自动新建空白脚本文件如果文件已存在则直接打开原有文件。vim分为两种工作模式完整操作流程① 打开文件后按下键盘i进入插入编辑模式此时可以自由输入脚本代码② 代码编写完成后按下Esc键退出编辑模式切换为命令模式③ 输入英文半角冒号:再追加对应指令实现保存、退出:wq保存本次所有修改退出vim返回终端:q文件无修改时直接退出编辑器:q!强制退出丢弃本次所有编辑内容不保存修改。3. 实操完整测试脚本在vim编辑模式下输入以下代码作为基础测试脚本#!/bin/bash# 读取系统环境变量echo当前用户$USER# 自定义局部数字变量a10b5# 双圆括号整数数学运算echo加法结果$((ab))# $0代表当前脚本文件本身统计脚本总行数wc-l$0模块2chmod 修改脚本执行权限概念理解Linux系统中新创建的文件默认不具备执行权限直接用./脚本名的方式运行会报错需要通过chmod命令给文件添加执行权限。命令用途与核心参数命令基础格式chmod 参数 目标文件名核心参数说明x给文件增加可执行权限本次实操核心参数-x移除文件已有的执行权限。实操权限修改命令chmodx test.sh命令执行后无任何输出代表权限修改成功如果提示No such file or directory代表当前目录不存在对应脚本文件需要先用vim创建文件。模块3三种运行Shell脚本的方式概念理解脚本添加执行权限后有推荐运行方式同时存在两种无需执行权限即可运行的兼容方式。实操命令与区别说明①./test.sh推荐运行方式必须提前执行chmod x添加执行权限代表执行当前目录下的test.sh文件②bash test.sh不需要提前赋予执行权限直接调用bash解释器读取并运行脚本③sh test.sh兼容老旧shell解释器同样不需要文件具备执行权限。脚本运行输出示例执行./test.sh后终端打印内容如下当前用户sui 加法结果15 7 ./test.sh最后一行数字代表脚本文件的总行数。模块4Shell变量使用规则概念理解统一使用符号$引用变量变量分为两类系统内置环境变量、脚本自定义局部变量。实操使用说明① 环境变量系统提前预设直接使用$变量名读取例如$USER代表当前登录用户名$HOME代表用户家目录② 自定义变量赋值格式为变量名值等号左右两侧绝对不能添加空格读取时同样使用$变量名变量实操示例代码namesuinum10echo$nameecho$num模块5wc 文件统计命令概念理解wc全称word count专门用于统计文件内容信息本次学习核心用途为统计文件行数。核心参数用法-l统计文件总行数本章节重点参数-w统计文件内单词总数量-c统计文件全部字符总数。基础统计实操命令wc-ltest.sh默认输出格式为「行数 文件名」如果只想获取纯数字行数搭配管道过滤输出wc-ltest.sh|awk{print $1}模块6Shell数学运算四种实现方案概念区分expr、$[]、$(( ))三种写法仅支持整数运算除法会直接舍弃小数部分bc工具支持高精度小数运算可通过scale关键字自定义保留小数位数。本次课堂练习题使用$(( ))完成整数嵌套计算bc实现小数除法。课堂练习题完整实操代码需要计算两组式子100*(50-45)、100/52# $(( )) 整数嵌套运算res1$((100*(50-45)))echo100*(50-45) $res1# bc小数运算设置保留4位小数res2$(echoscale4; 100/52|bc)echo100/52 $res2运算输出结果100*(50-45) 500 100/52 1.9230模块7命令退出状态码 $?概念理解终端中每一条命令执行完毕后系统都会生成对应的退出状态码通过$?可以读取上一条命令的执行结果数字0代表命令执行成功非0数字代表执行出错不同数字对应不同错误类型。实操演示代码# 执行正确命令lsecho$?# 输出0代表命令执行成功# 执行不存在的错误命令abcdecho$?# 输出非0数字代表命令执行失败四、实操高频报错解决方案chmod: cannot access ‘test.sh’: No such file or directory报错原因当前目录未创建test.sh脚本文件解决方法执行vim test.sh创建文件后再修改权限。-bash: ./test.sh: 没有那个文件或目录报错原因缺少目标脚本文件或文件名大小写输入错误Linux系统区分文件名大小写解决方法执行ls查看当前目录存在的文件核对文件名。vim编辑器内无法输入:wq退出报错原因仍处于插入编辑模式未切换到命令模式解决方法按下一次Esc退出编辑模式再输入英文冒号加保存退出指令如果编辑器卡死使用快捷键CtrlZ挂起vim输入kill %强制关闭vim进程。五、学习总结Shell脚本后缀统一为.sh使用vim编写脚本首行必须声明#!/bin/bash指定解释器所有变量统一使用$符号读取自定义变量赋值时等号两侧禁止添加空格wc -l是统计文件行数专用命令$(( ))适合快速书写整数运算bc工具用于处理带小数的计算chmod x可以给脚本添加执行权限脚本一共有三种运行方式$?可以查看上一条命令执行状态返回0代表成功非0代表执行失败全部操作均在Xshell中完成操作命令前建议用ls确认文件是否存在规避文件不存在类报错。