Shell脚本入门:从基本命令到数学运算的完整指南
一、什么是Shell脚本Shell脚本本质上是一个包含多条命令的文本文件。当你执行这个文件时Shell会按顺序依次执行文件中的每一条命令就像你在命令行中逐条输入一样。为什么需要Shell脚本假设你每天都要执行一组固定的操作如备份日志、清理缓存、生成报告如果每次都手动输入这些命令既繁琐又容易出错。把命令写进脚本一次编写随时运行这就是自动化。在脚本文件的第一行必须指定使用哪个Shell来解释执行该脚本格式为 #!/bin/bash。#! 是一个特殊标记后面跟着Shell程序的路径。二、创建和执行Shell脚本创建脚本使用文本编辑器如vim创建一个 .sh 后缀的文件将命令写入其中。执行脚本有两种方式方式一通过bash命令执行bash test.sh这种方式的优点是不需要给脚本添加执行权限适合快速测试。方式二直接执行需要可执行权限./test.sh # 相对路径/home/用户/test.sh # 绝对路径如果权限不足会报 Permission denied。需要先用 chmod x test.sh 给脚本添加可执行权限。两种方式中方式一bash 脚本名对新手更友好不用处理权限问题。三、echo命令与命令替换echo命令用于在终端中输出文本消息帮助用户了解脚本当前的执行进度。echo -n 参数可以让输出不换行使文本和后续内容显示在同一行。命令替换是Shell脚本中非常有用的特性——将一个命令的输出结果捕获并赋值给变量供后续命令使用。有两种语法格式反引号格式命令前后加上$()格式 $(命令)推荐使用 $() 格式因为它更清晰且支持嵌套。例如在脚本中获取当前日期并生成唯一文件名%y%m%d 让 date 命令输出两位数的年月日组合如 260709可用于生成日志文件名。四、变量在脚本中的使用在脚本中可以使用三类变量引用系统环境变量在变量名前加 $ 即可引用如HOME、HOME、HOME、PATH。如果希望原样输出 $ 符号而不是解析变量需要在 $ 前加反斜杠转义$HOME。自定义变量在脚本中自己定义的变量用于临时存储数据。格式为 变量名值等号两边不能有空格。变量名只能由字母、数字和下划线组成区分大小写。脚本中定义的变量在脚本执行完毕后就会被销毁无法在Shell命令行中访问。命令替换赋值将命令的输出结果赋给变量如 cur_date$(date)。五、wc命令——统计文件内容wcWord Count命令用于统计文本文件的行数、单词数和字节数。默认输出三个数值行数、单词数、字节数。常用参数-l只统计行数-w只统计单词数-c只统计字节数结合通配符可以批量统计wc -l *.txt 统计当前目录下所有txt文件的行数。六、数学运算Bash Shell默认只支持整数运算。执行数学运算有三种方式expr命令古老的运算方式要求操作符和数字之间有空格且部分特殊字符如 *需要转义。expr 5 3 # 结果为8expr 5 * 3 # 结果为15*需要转义[]或(()) 格式推荐使用语法更简洁不需要注意空格不需要转义。echo $[5 3] # 结果为8echo $((5 * 3)) # 结果为15bc计算器如果需要进行浮点数运算需要使用 bc 命令。bc 本身是一个独立的计算器程序进入后输入表达式即可计算用 quit 退出。默认 bc 也是整数结果通过设置 scale 变量可以指定小数位数echo “scale2; 100/3” | bc # 结果为33.33在脚本中使用 bc 的标准格式result$(echo “scale2; 100/52” | bc)echo $result七、退出状态码在Linux中每个命令执行完毕后都会返回一个退出状态码给Shell用于告诉Shell该命令是否执行成功。状态码 0表示命令执行成功状态码 1-255表示命令执行失败或出现异常具体含义由命令自身定义使用 $? 变量可以查看上一条命令的退出状态码ls /etc/passwd # 执行成功echo $? # 输出0ls /nonexist # 文件不存在echo $? # 输出非0值通常为2在脚本中使用 exit 命令可以自定义退出状态码exit 0 # 脚本正常退出exit 5 # 脚本以状态码5退出习惯建议在编写脚本时用 exit 0 表示成功用 exit 非0值 表示不同类型的错误这样其他程序调用你的脚本时可以通过状态码判断执行结果。编辑脚本创建并执行脚本文件