Shell脚本入门基础详解

Shell脚本入门基础详解 一、前言Shell脚本是Linux系统运维、自动化工作的核心工具通过将多条命令整合编写成脚本文件能够实现指令批量执行、任务自动化等功能。本文从零开始讲解Shell脚本基础语法、文件创建、变量使用、数学运算、状态码等核心知识点搭配完整实操案例新手也可快速上手练习。二、命令串联符号在Linux终端中可通过特定符号组合多条命令实现连续执行。分号 ;作用多条命令按顺序依次执行每条命令都会输出执行结果。示例先输出系统时间再输出当前登录用户信息。管道符 |作用将前一条命令的输出结果作为后一条命令的输入仅展示最终执行结果。三、Shell脚本创建与执行脚本文件规范• 脚本文件后缀统一为 .sh• 文件第一行必须书写解释器声明#!/bin/bash用于指定使用bash解析脚本• # 开头内容为注释脚本执行时会自动忽略。基础脚本示例命名为test.sh输出系统时间与登录用户datewho2. 两种执行方式调用bash直接执行无需执行权限语法bash 脚本文件名bash test.sh路径直接执行需要添加执行权限直接运行脚本前必须赋予文件执行权限否则会提示权限不足。• 添加执行权限chmod ux test.sh• 执行脚本./test.sh四、echo 输出命令echo 是脚本中最常用的输出命令用于打印文本、变量内容。基础用法正常输出字符串echo “查看当前登录用户”echo -n取消换行让后续内容和当前内容在同一行输出echo -n “当前系统时间”date五、Shell 变量变量是脚本存储数据的载体分为系统环境变量和自定义变量两大类。系统环境变量系统自带变量记录用户、路径、权限等系统信息调用格式变量名。常用变量变量名。 常用变量变量名。常用变量USER当前用户名、UID用户ID、UID用户ID、UID用户ID、HOME用户家目录。示例echo “当前用户USERecho用户IDUSER echo 用户IDUSERecho用户IDUID”echo “家目录$HOME”加反斜杠 \ 可原样输出 $符号不解析变量echo “原始字符串$HOME”2. 自定义变量命名规则由字母、数字、下划线组成区分大小写赋值规则等号前后绝对不能加空格作用域仅在当前脚本内生效。示例命令替换将命令的执行结果赋值给变量两种写法推荐使用 $(命令) 格式。• 写法1反引号命令• 写法2$(命令)支持嵌套兼容性更好示例获取系统时间赋值给变量日期格式化用于生成日志文件名六、wc 内容统计命令wc 用于统计文件的行数、单词数、字节数。• 直接使用 wc 文件名依次输出 行数、词数、字节数• wc -l 文件名仅统计文件行数• wc -l *统计当前目录下所有文件的行数。示例七、Shell 数学运算Shell 默认只支持整数运算浮点数运算需要借助 bc 计算器工具。整数运算三种常用方式expr 命令运算符前后必须加空格乘号 * 需要转义为 *$[] 格式无需空格、无需转义写法简洁$(( )) 格式主流推荐写法功能强大浮点数运算bc 工具bc 是Linux内置计算器通过管道符在脚本中调用scale 用于指定保留小数位数。保留5位小数计算除法var(echoscale5;8/3∣bc)echo计算结果(echo scale5; 8/3 | bc) echo 计算结果(echoscale5;8/3∣bc)echo计算结果var八、脚本退出与状态码退出状态码 $?$? 是特殊变量用于保存上一条命令/脚本的执行状态。常见状态码含义• 0命令/脚本执行成功• 1通用未知错误• 126文件存在但无法执行• 127未找到对应命令。查看状态码命令exit 自定义退出码在脚本中使用 exit 数字可以手动指定脚本退出后的状态码。示例脚本#!/bin/bashecho “脚本执行完毕”exit 8执行脚本后输入 echo $?会输出自定义状态码 8。九、实操避坑总结脚本首行务必添加 #!/bin/bash 解释器声明直接 ./ 运行脚本前必须执行 chmod ux 脚本名 赋予执行权限自定义变量赋值时 前后不能有空格expr 运算运算符必须带空格* 必须转义原生Shell不支持小数运算浮点数计算必须使用 bc脚本内定义的变量无法在脚本外的终端直接使用。