命令的组合:
1. 多个命令的顺序分隔:
1. 顺序分隔,使用 ; 顺序执行; 2. 逻辑与分隔, 使用 && , 一旦前面的命令执行失败,后面的命令就不会执行; 3. 逻辑或分隔, 使用 || , 一旦前面的命令执行失败,后面的命令才会执行; 一个很有用的组合逻辑分隔:命令1 && 命令2 || 命令3: 当命令1成功时会执行命令2, 当命令1失败时,会执行命令3;重定向:
类型 | 设备文件 | 文件描述号 | 默认设备 |
标准输入 | /dev/stdin | 0 | 键盘 |
标准输出 | /dev/stdout | 1 | 显示器 |
标准错误输出 | /dev/stderr | 2 | 显示器 |
类型 操作符 用途
重定向输入 < 输入源来自指定的文件; 重定向输出 > 输出到指定的文件(覆盖) >> 与> 类似,它是追加; 重定向错误 2> 输出错误信息到指定的文件; 2>> 与上面类似,它是追加; 混合重定向 &> 所有的输出,相当于 >和2>
变量值
当使用双引号括起变量时, 1)在内部可以使用$扩展变量值 2)可以使用\转义 3) 没有空格或Tab时,可以省略双引号;
当使用单引号括起变量时, 把内部所以字符视为变量本身, 并不能有转义;读入变量值:
read 取值的用法: read 变量名 或 read -p "提示信息“ 变量名 或 加上 -s 选项(输入的值不显示在屏幕上)变量的作用范围:
1. 局部变量,在当前的shell中有效; 2. 全局变量, 在当前shell和子shell中有效; 使用export 变量名[=变量名]发布全局变量, 使用 export -n 变量名取消全局变量; 变量: 引用变量:使用$变量名 或 ${变量名} 取消变量: unset 变量名 常见的预定义变量: $0: 当前所在进程或脚本名 $$: 当前运行进程的PID号 $?: 命令执行之后返回的状态值,0表示正常, 1或其它表示异常 $#: 已加载的位置的变量的个数 $*: 所有的位置的变量的值数值运算:
常见运算:加法: num1 + num2
减法: num1 - num2
乘法: num1 * num2
除法: num1 / num2
取余: num1 % num2
两种实现方法:
1. 使用expr工具, 使用方法: expr 1 + 2 注意:1)运算符之间需要有空格 2) 乘号需要转义,即/* 3)变量名不可以省略$
2. 使用$[ ]表达式 使用方法: $[1+2] 注意:1)可以不需要空格 2)乘号不需要转义 3)变量名可以省略$ 4)用**表示乘方运算;
使用let 命令操作变量:
实现自增/自减/自乘/自除 例如:x=2; let x+=2
随机整数变量:
RANDOM,产生0~32767之间的整数; 如:echo $RANDOM
生成一列整数:
seq 命令: 默认从1开始,步长为1
用法: seq 末尾数 或 seq 开始数 末尾数 或 seq 开始数 步长 末尾数
使用 -s "分隔符" 可以自定义分隔符, 默认为/n
shell中使用小数:
使用bc计算器,linux基本都默认安装, 使用quit 退出; 它可以结合管道符使用;
shell中常用的条件测试
1. 判断一条命令是否执行成功?查看返回状态值$?, 如果为0表示成功,否则失败;
2. 使用test检测文件状态: 使用方法: 1)test 选项 文件或目录 2)[ 选项 文件或目录 ] 常用到的测试选项: -e 检测对象是否存在,存在则为真; -d 检测对象是否是目录; -f 检测对象是否是一般文件; -r 检测对象是否有可读权限; -w 检测对象是否有可写权限; -x 检测对象是否有可执行权限; 3. 使用test 比较整数值: 使用方法: 1)test 整数值1 选项 整数値2 2)[ 整数值1 选项 整数値2 ] 常用到的选项: -eq 等于(equal) -ne 不等于(not equal) -ge 大于或等于(greater or equal) -le 小于或等于(lesser or equal) -gt 大于(greater than) -lt 小于(lesser than) 组合多个条件: 方法1. test 测试条件1 -a或-o 测试条件2…… , 其中-a 表示并, -o 表示或; 方法2. [[ 测试条件1 &&或|| 测试条件2…… ]] 4. test 比较字符串 使用方法: [ 字符串1 选项 字符串 ] 或 [ 选项 字符串 ] 常用选项: = 两个字符串相同 != 两个字符串不相同 -z 字符串是否为空 -n 字符串的值不为空 5. 条件取反 使用方法: [ ! 测试条件 ]字符串处理:
1. expr substr 字符串 起始位置 截取长度 作用:截取字符串中的一定的长度;
2. cut 命令: 用法: 1. cut -c 起始位置-结束位置 文件名 (默认开始位置为1) 2. cut -d ‘分隔符‘ -f 字段编号 文件名 3. cut 也可以配合管道符使用 3. 使用${}表达式 截取用法: ${变量名:起始位置:截取长度} (默认的开始位置为0) 替换用法: ${变量名/old/new} 只替换第一个出现的; ${变量名//old/new} 替换字符串的所有; 4. 单字替换工具tr 替换: 命令输出 | tr 'abc' 'ABC' //把字符a,b,c换为A,B,C,而不是把 abc 换为 ABC 删除: 命令输出 | tr -d 'ac' //删除其中的字符a 和 c 5. 获取文件的路径名与文件名 获取路径名: dirname "字符串“ 获取文件名: basename "字符串” 6. 提取命令的输出: 方法:1. 使用反引号 `可执行命令` 2. 使用$() $(可执行命令) //它方便命令的嵌套