目录
-
变量
变量的定义
> 变量名=值 [注意: 等号左右两边不允许有空格] 如果有空格 解释器会将其解释为一条指令 如果这条指令不存在就会报错了
> 使用变量的值 $变量名
> 常量的声明
> 值一旦被赋予就不能再发生修改
> 使用一个修饰符修饰 readonly
> PI=3.14
> readonly PI 修饰PI为只读格式
删除变量
> unset 变量名 -
字符串类型
字符串类型
> 数据是使用引号包含的 单双引号不区分
> 单双引号的区别:
> 在字符串中如果使用某个变量的值, 单引号中不识别变量的 变量是无效的
> 双引号是可以识别的
> 在字符串中使用变量的值的格式:
> $变量名 或者是 ${变量名}
> 获取字符串的长度
> ${#变量名}
> 提取字符串
> ${变量名:起始索引:结束索引}
> 获取某个字出现的位置
> `expr index "$变量名" 字`
> 写表达式的时候:
> expr 表达式
> 如果想让shell语言识别表达式需要使用反引号[tab键上方的]包含
> 如果想让某个表达式执行 需要使用expr进行表达式标记 使用反引号包含 解释器才能去执行这个表达式 -
数组类型
数组类型
> 数组的声明:
> 变量名=(值 值1 值2)
> 获取某个位置的元素
> ${变量名[索引]}
> 获取数组中所有的元素
> 惯性思维: $变量名 ---- 实质上获取的是第一个元素
> ${变量名[@]}
> 或者是
> ${变量名[*]}
> 获取数组的长度
> ${#变量名[@]}
> 或者是
> ${#变量名[*]} -
算术运算符
算术运算符
> + - *(需要进行转义) /[整除] % --- 运算出来结果
>
> *在shell语言中需要转义 -
关系运算符
数值类型
> $n1 -gt $n2 =====> n1 > n2
> $n1 -ge $n2 =====> n1 >= n2
> $n1 -lt $n2 =====> n1 < n2
> $n1 -le $n2 =====> n1 <= n2
> $n1 -eq $n2 =====> n1 == n2
> $n1 -ne $n2 =====> n1 != n2
> 字符串类型
> $s1 > $s2 ====> shell 命令中重定向 >
> $s1 < $s2
> 上面这两个式子 判断的时候 需要加双括号 [[ $s1 > $s2 ]]
> $s1 = $s2 =====> shell 判断是否相等是一个等号
> $s1 != $s2
> -z $s1 验证字符串长度是否为0
> -n $s1 验证字符串长度是否不为0
> 文件的判定
> -d 文件路径 验证文件是否是一个目录
> -e 文件路径 检验文件是否存在
> -f 文件路径 验证文件路径是否是一个文件
> -r
> -w
> -x
> 验证文件是否可读可写可执行
> -s 验证文件是否存在 并且非空
> file1 -nt file2 验证的file1是否比file2新
> file1 -ot file2 验证的file1是否比file2旧
> -O 验证文件是否存在并且归当前用户所有
> -G 验证文件是否存在并且属组与当前用户相同 -
逻辑运算符
逻辑运算符
> 逻辑与
> -a
> 逻辑或
> -o
> 逻辑非
> ! -
自增自减运算符
自增自减运算符
> 变量++ | ++变量
> 变量-- | --变量
> a=10
> a++或者是++a
> 单个表达式 表示的是在a原来的基础上自加1
> a++ ====> a = a + 1 = 11
> ++a ====> a = a + 1 = 12
> 参与运算的时候
> a++ ----> 先将a的值参与运算 再对a进行自加1
> ++a ----> 先将a进行自加1 再将a的结果参与运算
> 完成自加行为 ((a++))
> 将其值赋予给变量 $((a++))