1. 变量相关
-
长变量名加{}
虽然可加可不加,但是良好的习惯是加上{}符号,来确定变量名的边界,并且某些特定的地方不加容易出错。
-
使用变量的时候加$,可以把它理解成取值。
name="gyh" echo $name
-
readonly 设置变量只读,之后该变量不能改变值,和const含义差不多。
name="gyh" readonly name
-
unset删除变量
unset name
-
变量类型
- 局部变量
- 环境变量
- shell变量
-
单引号: 引号之内所有内容原样输出
-
双引号
- 可以有变量
- 可以有转义符
- 其他内容原样输出
2. 字符串
- 拼接字符串
your_name="gyh"
greeting="hello,${your_name}"
- 获取字符串长度
name="gyh"
echo ${#name}
其中 “#”相当于取其长度
- 提取字符串长度
name="guo yi heng"
echo ${name:1:6}
- 查找子字符串
name="guo yi heng"
echo `expr index "${name}" og`
查找字符串o或g所在位置
3. 数组
shell只支持一位数组
- 定义数组
arr=(a b c)
arr[6]=d
arr[9]=e
数组幅值可以不连续,但是提取长度时只关注幅值的位置,如上,arr长度为5
- 读取数组
- 读取数组中的某个元素
echo ${arr[2]}
- 读取整个数组
或者echo ${arr[@]}
echo ${arr[*]}
- 读取数组中的某个元素
- 读取数组长度
echo ${#arr[@]}
或者
echo ${arr[*]}
4. 多行注释
- 可以把要注释多行代码定义成函数体,这样只要该函数没被调用就不会发生任何作用
- 多行注释标识符
:<<EOF
这是注释的第一行
这是注释的第二行
这是注释的第三行
EOF
EOF也可以换成其他符号
:<<'
这是注释的第一行
这是注释的第二行
这是注释的第三行
'
:<<!
这是注释的第一行
这是注释的第二行
这是注释的第三行
!