1、变量讲解
$0 获取当前执行的shell脚本名称
$n 获取当前执行的shell脚本的第n个参数,如$1 $2
$# 获取当前执行的shell脚本的参数总个数
$* 获取当前shell脚本所有的传参参数,不加引号和$@相同,加双引号相当于“$1 $2 $3”
$@ 获取当前shell脚本所有的传参参数,不加引号和$*相同,加双引号相当于“$1”"$2""$3"
$? 获取执行上一个指令的状态,0为正确,非0为错误
$$ 获取执行当前脚本的pid
$! 获取上一个后台工作的进程的进程号
$_ 获取在此之前执行的命令或脚本的最后一个参数
2、变量子串
${name} 返回变量$name的内容
${#name} 返回变量$name的内容总长度(按字符)
${name#liang} 从变量开头开始删除最短匹配liang的子串
${name##liang} 从变量开头开始删除最长匹配liang的子串(贪婪匹配)
${name%liang} 从变量结尾开始删除最短匹配liang的子串
${name%%liang} 从变量结尾开始删除最长匹配liang的子串(贪婪匹配)
${name/liang/wang} 把wang替换成第一个匹配到的liangzeyu
${name//liang/wang} 把wang替换成所有匹配到的liangzeyu(贪婪匹配)
3、数值计算
+ - 加法 减号
* / % 乘 除 取模
** 幂运算
++ -- 增加 减少
! && || 逻辑符号:取反 与(and) 或(or)
< <= > >= 比较符号 小于 小于等于 大于 大于等于
== != = 相等 不相等 相当于
<< >> 向左移位 向右移位
~ | & ^ 按位取反 按位异或 按位与 按位或
= += -= *= /= %= a+=1 等于 a=a+1
4、运算命令
(()) 用于整数运算 ==>echo $((1+1))
let 用于整数运算 ==>let i=i+8
bc 计算器
expr 用于整数运算 ==> expr $i + 6 &>/dev/null #判断整数
$[] 用于整数运算 echo $[2*5]
awk 用于整数运算和小数运算 echo '13 14'|awk '{print $1+$2}'
5、条件测试
测试符 描述 示例
-e 文件或目录存在为真 [ -e path ] path 存在为 true
-f 文件存在为真 [ -f file_path ] 文件存在为 true
-d 目录存在为真 [ -d dir_path ] 目录存在为 true
-r 有读权限为真 [ -r file_path ] file_path 有读权限为 true
-w 有写权限为真 [ -w file_path ] file_path 有写权限为 true
-x 有执行权限为真 [ -x file_path ] file_path 有执行权限为 true
-s 文件存在并且大小大于0 为真 [ -s file_path ] file_path 存在并且大小大于 0 为 true
6、布尔运算符
运算符 描述 示例
! 非关系,条件结果取反 [ ! 1 -eq 2 ]为 true
-a 和关系,在[]表达式中使用 [ 1 -eq 1 -a 2 -eq 2 ]为 true
-o 或关系,在[]表达式中使用 [ 1 -eq 1 -o 2 -eq 1 ]为 true
7、逻辑判断符
&& 逻辑和,在[[]]和(())表达式中或判断表达式是否为真时使用
[[ 1 -eq 1 && 2 -eq 2 ]]为 true
(( 1 == 1 && 2 == 2 ))为 true
[ 1 -eq 1 ] && echo yes 如果&&前面表达式为 true 则执行后面的
|| 逻辑或,在[[]]和(())表达式中或判断表达式是否为真时使用
[[ 1 -eq 1 || 2 -eq 1 ]]为 true
(( 1 == 1 || 2 == 2 ))为 true
[ 1 -eq 2 ] || echo yes 如果||前面表达式为 false 则执行后面的
8、括号用途总结
( ) 用途 1:在运算中,先计算小括号里面的内容 用途 2:数组 用途 3:匹配分组
(( ))
用途 1:表达式,不支持-eq 这类的运算符。不支持-a 和-o,支持<=、>=、<、>这类
比较符和&&、||
用途 2:C 语言风格的 for(())表达式
$( ) 执行 Shell 命令,与反撇号等效
$(( )) 用途 1:简单算数运算 用途 2:支持三目运算符 $(( 表达式?数字:数字 ))
[ ] 条件表达式,里面不支持逻辑判断符
[[ ]]
条件表达式,里面不支持-a 和-o,不支持<=和>=比较符,支持-eq、<、>这类比较
符。支持=~模式匹配,也可以不用双引号也不会影响原意,比[]更加通用
$[ ] 简单算数运算
{ }
对逗号(,)和点点(...)起作用,比如 touch {1,2}创建 1 和 2 文件,touch
{1..3}创建 1、2 和 3 文件
${ }
用途 1:引用变量
用途 2:字符串处理
9、整数比较符
-eq 等于 [ 1 -eq 1 ]为 true
-ne 不等于 [ 1 -ne 1 ]为 false
-gt 大于 [ 2 -gt 1 ]为 true
-lt 小于 [ 2 -lt 1 ]为 false
-ge 大于或等于 [ 2 -ge 1 ]为 true
-le 小于或等于 [ 2 -le 1 ]为 false
有问题请加博主微信进行沟通!
全部评论