一、核心知识点梳理
1. 多命令执行与脚本创建
多命令串联:
多个命令可在同一行用分号(;)分隔依次执行(如date ; who),或用管道符(|)将前一个命令的输出作为后一个命令的输入(如date | who,仅显示最终结果)。
脚本创建规范:
以.sh为后缀(如test.sh),第一行必须指定 shell 解释器:#!/bin/bash(#!用于告诉系统脚本的运行环境)。
可包含注释(#开头),用于说明脚本功能。
2. 脚本执行方式
执行方式 操作步骤 注意事项
bash 命令执行 bash test.sh 无需脚本权限,直接调用 bash 解释器
路径直接执行 ./test.sh(相对路径)或/home/user/test.sh(绝对路径) 需先赋予可执行权限:chmod u+x test.sh
3. 输出与变量使用
echo 命令:
用于在脚本中输出文本消息,格式:echo "消息内容"。
-n参数可取消自动换行,使文本与后续命令输出在同一行(如echo -n "当前时间:"; date)。
变量操作:
系统环境变量:直接通过$变量名引用(如$USER显示当前用户名、$UID显示用户 ID、$HOME显示家目录)。
用户自定义变量:
定义规则:变量名由字母、数字、下划线组成(长度≤20,区分大小写),赋值时等号两侧无空格(如name="Tom")。
引用方式:$变量名(如echo "姓名:$name")。
命令替换:将命令输出赋给变量,两种方式:
反引号:out_date=date``
$()格式:today=$(date +%y%m%d)(推荐,更易读)
4. 文件内容计数(wc 命令)
功能:统计文本的行数、词数、字节数,默认输出 “行数 词数 字节数 文件名”。
常用参数:
-l:仅统计行数(如wc -l test.sh显示脚本的行数)。
通配符批量统计:wc -l *.sh统计当前目录下所有.sh脚本的行数。
5. 数学运算方法
expr 命令 expr 数字1 运算符 数字2 需注意运算符与数字间的空格,部分符号需转义(如*需写为\*),仅支持整数运算(如expr 100 \* 5)。
$[] 格式 $[ 表达式 ] 无需空格和转义符,支持变量运算(如result=$[100*(50-45)])。
$(()) 格式 $(( 表达式 )) 与$[]功能一致,更推荐(如result=$((100/52)),结果为整数除法)。
bc 计算器 variable=$(echo "scale=小数位数; 表达式" | bc) 支持浮点数运算,scale用于设置小数位数(如var=$(echo "scale=2; 3.44/5" | bc),结果为0.69)。
6. 退出状态码
含义:脚本中每个命令执行完毕后会返回一个 0~255 的整数(退出状态码),用于表示执行结果。
关键变量与命令:
$?:保存上一个命令的退出状态码(0 表示成功,非 0 表示失败)。
exit 状态码:在脚本末尾手动指定退出状态码(如exit 5,脚本结束后echo $?会显示 5)。
常见状态码:
0:命令成功执行
1:一般性错误
127:命令未找到
二、命令与参数总结
#!/bin/bash 指定脚本解释器 脚本第一行必写
chmod u+x 脚本名 赋予脚本可执行权限 chmod u+x test.sh
echo -n 输出文本不换行 echo -n "时间:"; date
$(命令) 命令替换(将输出赋给变量) today=$(date +%y%m%d)
wc -l 文件名 统计文件行数 wc -l test.sh
bc 浮点数运算工具 echo "scale=2; 5/3" | bc返回1.66
exit N 指定脚本退出状态码 exit 0(表示成功退出)




1721

被折叠的 条评论
为什么被折叠?



