变量命名规范
变量名可以由字母、数字和下画线组成,但是不能以数字开头。如果变量名是"2name",则是错误的
- 首个字符不能出现数字
- 变量名中间不能有空格
如何使用变量
- echo $name
只读变量
- readonly name
删除变量
- unset 变量名称 (只读变量除外)
三、shell字符串
单引号和双引号的区别
- 单引号的字符都是原样输出
- 单引号里的变量是无效的
- 双引号可以识别变量
获取字符串的长度
指获取变量str内字符串长度
- echo ${#str}
获取指定字符
- echo ${str:5:8}
- 第一个冒号后面的数值表示:取值的位置
- 第二个冒号后面的数值表示:取值个数
四、shell数组
如何定义数组
- student=(aa bb cc)
数组相关操作
1:获取数组所有元素:
echo ${student[@]}
echo ${student[*]}
2:获取指定元素(第一个):echo ${student[0]}
3:获取数组元素的个数:echo ${#student}
五、shell注释
- 单行注释:#
- 多行注释:
:<<eof
内容
eof
六、shell传递参数
参数 | 作用 |
---|---|
$0 | 显示文件名称 |
$1 | 第一个传参 |
$# | 获取传参个数 |
$* | 获取所有的传参 |
$@ | 获取所有的传参 |
$? | 显示上一条命令退出状态(0表示执行正常,非0 表示不正常) |
$@ vs $* | 特殊环境下的不同之处 |
---|---|
有双引号的情况下 | |
$@ | 原样输出 |
$* | 把所有的传参当成一个字符展示 |
shell运算
算术运算
方法一:
- expr 1 + 2
- expr 10 - 3
- expr 10 \ *3 注:符号和数字之间不能有空格,这里的反斜杠和乘号有空格是因为反斜杠在博客发布里有特殊含义,所以我以空格隔开,方便大家直观浏览
- expr 10 / 3
- expr 10 % 3
方法二:
- echo $[1+2]
- echo $[10-3]
- echo $[10*3]
- echo $[10/3]
- echo $[10%3]
方法三:
- echo $((1+2))
- echo $((10-3))
- echo $((10*3))
- echo $((10/3))
- echo $((10%3))
关系运算
- -eq:等于
- -ne:不等于
- -gt:大于
- -ge:大于等于
- -lt:小于
- -le:小于等于
布尔运算
- -a: 两个表达式都为true,才会返回true
- -o:其中一个表达式为true,就返回true
逻辑运算
逻辑运算又称布尔运算
- &&:逻辑的and
- ||:逻辑的or
字符串运算
- -n:字符长度不为空
- -z:字符长度为空
- =:两个字符串是否相等
- !=:判断两个字符是否不一致
文件测试运算
- -d:文件存在并且是一个目录
- -e: 文件是否存在
- -f:文件存在并且是一个普通文件
- -r:文件是否有可读的权限
- -w:文件存在并且有可写的权限
- -x:文件存在并且有执行权限
shell流程控制
判断
第一种:
if 表达式;then
elif 表达式
fi
第二种
case $1 in
start)
echo “start”
;;
stop)
echo “stop”
;;
status)
echo “status”
;;
restart)
echo “restart”
;;
reload)
echo “reload”
;;
*)
echo $“Usage: $0 {start|stop|status|restart|reload}”
;;
esac
循环
第一种:
for 表达式
do
done
第二种:
while 表达式
do
done
第三种:当表达式为false时,才开始执行下面的命令(一般情况不用)
until 表达式
do
done