
书: 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
压缩解压。