
书: https://pan.baidu.com/s/1hMg-9fMkkzntAfHoLymQMA?pwd=2tx9
笔记如下:
- Shebang指令:脚本首行通常为
#!/bin/bash,指定解释器路径。 - 变量赋值与引用:变量无需声明,直接赋值(如
var="value"),引用时加$(如echo $var)。 - 命令行参数:
$0为脚本名,$1到$9为位置参数,$#表示参数个数。 - 条件判断:
if [ condition ]; then ... fi,条件符包括-eq(等于)、-f(文件存在)等。 - 循环结构:
for i in {1..5}; do ... done或while [ $counter -lt 10 ]; do ... done。 - 函数定义:
function_name() { commands; },调用时直接写函数名。 - 字符串操作:截取子串
${str:0:5},替换${str/old/new},长度${#str}。 - 数组使用:定义
arr=(1 2 3),访问元素${arr[0]},遍历for i in "${arr[@]}"; do ...。 - 文件测试:
-e(存在)、-d(目录)、-r(可读),如if [ -f "file.txt" ]; then ...。 - 输入输出重定向:
>覆盖写入,>>追加,2>错误输出,<输入重定向。 - 管道与命令替换:管道
cmd1 | cmd2,命令替换`cmd`或$(cmd)。 - 正则表达式:
grep、sed、awk支持正则,如grep "^[a-z]" file.txt。 - sed文本处理:替换
sed 's/old/new/g' file,删除行sed '/pattern/d'。 - awk高级文本处理:按列处理
awk '{print $1}' file,条件过滤awk '$3 > 100 {print}'。 - 调试脚本:
set -x开启调试,set +x关闭,或使用bash -x script.sh。 - 信号处理:
trap 'cleanup' SIGINT捕获Ctrl+C信号并执行清理函数。 - 后台运行:命令后加
&使进程后台运行,nohup防止退出终止。 - 日志记录:
logger "message"写入系统日志,或自定义日志文件echo "$(date): msg" >> log.txt。 - 数学运算:
$((a + b))或expr 2 + 2,浮点运算需借助bc。 - 实用工具:
find查找文件,xargs批量处理,cron定时任务,tar压缩解压。