目录 1.Shell基础知识 2.判断和循环语句 3.函数与中断、字符串的处理 4.正则表达式、SED文本编辑器 5.AWK数据过滤与数据分析 6.脚本综合案例 ------------ 1. Shell基础知识 1)常见shell解释器 /bin/bash /bin/sh /bin/csh /bin/tcsh 2)通过usermod、chsh可以更改登陆Shell 3)标准输入与输出的重定向 > :标准输出,覆盖写入 >>:标准输出,追加写入 2>:错误输出,覆盖写入 2>>:错误输出,追加写入 &>:标准和错误一起纯输出,覆盖写入,和 > txt 2>&1 效果一样 4)source命令执行脚本文件,不会启动子进程,通过pstree查看进程树 5)环境变量 存储在/etc/profile或~/.bash_profile 命令env可以列出所有环境变量 常见环境变量:PATH、PWD、USER、UID、HOME、SHELL 6)位置变量 存储脚本执行时的参数 使用$n表示,n为数字序列号 $1、\(2、...、\){10}、${11}、... eg:通过位置变量创建系统账户,配置密码 useradd "$1" echo "$2" | passwd --stdin "$1" 7)预定义变量 变量名 含 义 $0 当前所在的进程或脚本名 $$ 当前运行进程的PID号 $? 命令执行后的返回状态,0表示正常,1或其他值表示异常 $# 已加载的位置变量的个数 $* 所有位置变量的值 8)区分三种定界符 双引号 " ":允许扩展,以 $ 引用其他变量 单引号 ' ':禁用扩展,即便 $ 也视为普通字符 反引号 ` `:将命令的执行输出作为变量值,$()与反引号等效 9)read 从键盘读入变量值完成赋值 格式: read [ -p "提示信息" ] 变量名 -p可选,-t 可指定超时秒数,-s设置是否在终端显示输入的内容 [root@localhost ~]# vim /root/shell/day01/read.sh #!/bin/bash read -p "请输入用户名:" name read -p "请输入密码:" -s pass useradd "$name" echo "$pass" | passwd --stdin "$name" [root@localhost ~]# bash /root/shell/day01/read.sh 请输入用户名:jerry 请输入密码: 10)变量作用域 局部变量 新定义的变量默认只在当前Shell环境中有效,无法在子Shell环境中使用 全局变量 全局变量在当前Shell及子Shell环境中均有效 [root@localhost ~]# x=11 #定义局部变量 [root@localhost ~]# sh #进入子Shell sh-4.2# echo $x #无此变量,输出为空 sh-4.2# exit #退出子Shell [root@localhost ~]# export x=11 #定义全局变量 11)计算 $[]算式替换 使用 $[ ] 或 $(( )) 表达式 格式:$[整数1 运算符 整数2 .. ..] 计算结果替换表达式本身,可结合echo命令输出 Bash内建机制仅支持整数运算,不支持小数运算 [root@localhost ~]# echo $[3.5+2.2] -bash: 3.5+2.2: 语法错误: 无效的算术运算符 (错误符号是 ".5+2.2") 我们可以通过计算器软件bc实现小数运算 如果没有该软件则需要使用yum安装 bc支持交互式和非交互式两种方式计算,scale=n可以约束小数位 bc计算器 scale=n可以约束小数位 quit退出交互式计算 12)echo回显 -n选项:不换行 -e选项:支持扩展属性 [root@localhost ~]# echo "hello world" #换行 hello world [root@localhost ~]# echo -n "hello world" #不换行 hello world[root@localhost ~]# [root@localhost ~]# echo -e "\033[31mOK\033[0m" #红色显示OK [root@localhost ~]# echo -e "\033[32mOK\033[0m" #绿色显示OK [root@localhost ~]# echo -e "\033[34mOK\033[0m" #蓝色显示OK