变量规则
- 包含字母、数字和下划线
- 首个字符不能是数字
- 不能使用空格、标点符号和shell中的关键字
- 赋值变量与值=号之间不能有空格
#!/bin/bash
yourName="hello"
echo $yourName
这里定义的一个变量yourName,使用变量需要在前面添加一个$,{} 包括变量,也可省略,不过在双引号中,可以做变量边界。
变量的重新赋值
yourName="hello"
yourName="hello1"
设置变量只读
readonly + 变量名:实现变量的属性只读,不可更改
yourName="hello"
readonly yourName
删除变量
unset + 变量名
变量类型
字符串
可以使用双引号、单引号甚至不使用引号,双引号可以出现变量和转义字符。
- 字符串长度 ${#yourName}
- 字符串截取 ${yourName:1:2} 索引是从0开始
- 查找字符串 echo
expr index "$yourName" l
使用反引号` l 就好查找的字符,索引还是从0开始,输出第一个出现的索引
数组
shell 只支持以一维数组
- 定义
array_name=(value1 value2 …) 空格间隔
array_name[0]=value1 - 读取数组
${yourName[0]} 读取数组第一个元素
${yourName[@]} 读取所有元素 - 数组长度
${#yourName[@]}
#!/bin/bash
yourName=(1 2 3 4)
echo ${yourName[0]}
echo ${yourName[@]}
注释
#:就是注释当前行
传递参数
$n 获取对应的参数
#!/bin/bash
echo "$0"
echo "$1"
echo "$2"
- $# 传递到脚本的参数的个数
- $$ 当前进程ID
- $! 后台最后进程的Id
- $* 显示所有参数
运算符
shell并不支持直接运算,可以使用expr 和 awk
expe 使用反引号包括
- 算术运算符
`expr 2 + 2`
注意这里 + 左右两边都是用空格的
计算运算符:+ - / * = == !=
- 关系运算符
-eq -nee -gt -lt -ge -le
[ $a -eq $b ]
- 布尔运算和逻辑运算
! 非
-o 或
-a 与
&&
|| - 字符运算
= 判断相等
!= 判断不相等
-z 检测长度是否为0
-n 检测长度是否不为0
$ 检测是否为空 - 文件测试运算符
[-b file] 检测文件是否为块设备文件
[-f file] 检测文件是否可读
[-e file] 检测文件或目录是否存在