LinuxShell脚本攻略.第3版(etc.)

书: https://pan.baidu.com/s/1hMg-9fMkkzntAfHoLymQMA?pwd=2tx9
笔记如下:

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

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注