

1.脚本运行环境
- 登录后默认使用的Shell程序,一般为/bin/bash不同Shell的内部指令、运行环境等会有所区别
- 查看shell cat letc/shells
- /bin/sh
- /binvbash
- /sbin/nologin
- /bintcsh
- /bin/csh
- /binksh
awk ‘(print $1)’:取某一列 awk -F: ‘(print $1,$2)’ wc -l统计行数
2.shell的编写与执行
- 第一行:声明使用的bash:#!/bin/bash
- 第二行:注释
- 执行shell脚本的方式
- ./脚本,必须要有x权限
- sh 脚本 不一定需要x的权限
- source 脚本
- 重定向与管道操作
- 交互式硬件设备:
- 标准输入:/dev/stdin 0
- 标准输出:/dev/stdout 1
- 标准输出错误:/dev/stderr 2
- 交互式硬件设备:
重定向输入 | > | 将输出重定向到文件 |
重定向输出 | < | 将输入重定向文件 |
追加 | >> | 将文件以追加的方式重定向到文件 |
输出合并 | >& | 将输出文件合并 |
输入合并 | <& | 将输入文件合并 |
<<tag | 将开始标记tag和结束标记tag之间的内容作为输入 |
- /dev/null :如果希望执行某个命令但是有不希望屏幕上显示输出结果,可以将输出重定向到/dev/null文件中。此文件是一个特殊的文件,写入的文件都会被丢弃,从此读取文件内容啥也读取不到,但是他会起到禁止输出的效果
2.变量
- Shell变量的作用
- 变量的作用
- 为灵活管理 Linux系统提供特定参数,有两层意思
- 变量名:使用固定的名称,由系统预设或用户定义
- 变量值: 据用户设置、系统环境的变化而变化
- 变量的类型
- 自定义变量:由用户自己定义、修改和使用
- 环境变量:由系统维护,用于设置工作环境
- 位置变量:通过命令行给脚本程序传递参数
- 预定义变量:Bash中内置的一类变量,不能直接修改
- 变量的作用
- 自定义变量
- 赋值时使用引号
- 双引号:允许通过$符号引用其他变量值
- 单引号:禁止引用其他变量值,$视为普通字符
- 反撇号:命令替换,提取命令执行后的输出结果
- read -p [” “] var 键盘输入内容为变量赋值
- 设置变量的作用范围
- export :全局变量
➢整数变量的运算
- 格式: expr 变量1 运算符 变量2 运算符 变量3…
- 常用运算符
- 加法运算: +
- 减法运算:-
- 乘法运算:\ *
- 除法运算: /
- 求模(取余)运算: %
- 环境变量:
- 配置文件:/etc/profile,~/bash_profile
- 位置变量:$n,n为1-9之间的数字
- 默认参数位置:
- $#:传递参数脚本的参数的个数
- $*:所有位置参数的内容
- $?:命令中执行后返回的状态
- $$:当前进程的进程号
- $!:后台运行的最后一个进程号
- $-:显示shell使用的当前选线
- $0:当前执行的进程名
CRONTAB
- 计划任务(编写脚本时注意添加命令的脚本,先export 脚本变量)
- crontab -e:修改crontab文件
- crontab -l:显示crontab文件
- crontab -r:删除crontab文件
- crontab -ir:删除crontab文件前确认
- 编写语法(某一列’*’表示全部范围有效):
- 第一列:分钟00-59
- 第二列:小时00-23
- 第三列:日1-31
- 第四列:月1-12
- 第五列:星期:0-6
- 第六列:运行的命令(要写完全路径)
3.条件测试
- 条件测试:文件测试,整数值比较,字符型比较
- if语句
- test命令:测试指定表达式是否成立
- 格式:①test 条件表达式 ; ② test [ 条件表达式 ](中括号中间的表示与中括号两端都要有空格)
- 文件测试: 格式:【操作符 文件或目录】
- -d 测试时候是目录
- -f 测试是否是文件
- -e 测试目录或者文件是否存在
- -r,w,x:测试目标是否有相应的权限
- 数值比较 : [整数1 操作符 整数2]
- -eq :等于
- -ne: 不等于
- -gt:大于
- -lt:小于
- -le:小于等于
- 字符串比较
- 格式:[ 字符串1 = 字符串2 ]()等号的左右要有空格,【】与字符串之间也要有空格,而赋值语句则等号左右没有空格
- 【 -z 字符串】判断是否是空白字符串
- 逻辑测试
- 格式:【表达式1】操作符 【表达式2】
- 格式2: 命令1 操作符 命令2
- -a或者&&:逻辑与,而且的意思
- -o或者||:逻辑或,或者的意思
- !:逻辑否
- if结构
-
- 单分支结构:if then fi
- 双分支结构: if then else fi
- 多分枝结构:if then elif then else fi
-
- test命令:测试指定表达式是否成立
- if语句
3.循环
- for循环




- for循环写法
- for((i=1;i<=10;i++))
- for i in `seq 10`
- for i in {1…10}
- 表达式的表达方法
- let var=a * j
- ((var=i*j))
- var=$i*$j
- var=$[i*j]
- var=`expr $i \* $j `
- var=`echo $i*$j |bc`
- while循环
- case

