shell讲解
shell 变量:
name=”hauzai007”
echo $name
注意事项:
变量名和等号之间不能有空格
不能使用标点符号
不能使用bash里的关键字
只读变量:
name=”huazai007”
关键字:readonly name
删除变量:
unset name
变量类型:
1 局部变量:
局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量
2 环境变量:
所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
系统环境变量:
查看所有环境变量:env
删除环境变量:unset HAHA
举个例子:
PPID:是当前进程的父进程的PID
PWD:当前工作目录。
RANDO:随机数变量。每次引用这个变量会得到一个0~32767的随机数。
查看所有环境变量:env
删除环境变量:unset
用vim在/etc/profile文件中添加我们想要的环境变量
设置新的环境变量
export 新环境变量名=内容
例:export MYNAME=”LLZZ”
生效:source /etc/profile
shell 字符串
单引号和双引号的区别:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
双引号的优点:
双引号里可以有变量
双引号里可以出现转义字符
获取字符串的长度:
str=”abcd”
echo ${#str}
提取字符串:
str=”abcd”
#表示从字符串第二个字符开始截取 ,取 4个字符
echo ${str:1:4}
shell 数组
定义数组
arr=(aa bb cc)
读取数组
echo ${arr[0]}
获取数组的长度
echo ${arr[@]}
echo ${arr[*]}
shell 多行注释:
:<<EOF
xxxx
xxxxx
EOF
shell 基本运算符
算数运算符
- 加法
- 减法
- 乘法
/ 除法
% 取余
= 赋值
== 比较(相等)
!= 不相等
关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字
-eq 是否相等
-ne 是否不相等
-gt 表示大于
-lt 表示小于
-ge 大于等于
-le 小于等于
布尔运算符
!
-o 或运算 两个表达式只要有一个是true 就返回true
[ $a -lt 20 -o $b -gt 100 ] 返回 true
-a 与运算 两个表达式都为true才返回true
[ $a -lt 20 -a $b -gt 100 ] 返回 false
逻辑运算符
&& 等同于 –a
|| 等同于-o
if [[ $a –lt $b && $b –gt 100 ]]; then
echo “”
else
echo “”
fi
字符串运算符
=: 检测两个字符是否相等
!=: 检测两个字符不相等
-z : 是否为空
-n :字符串的长度是否为0
文件测试运算符
-b 检测文件是否为块设备
-d 是否为目录
-f 是否为普通文件
-r 是否可读
-w 是否可写
-x 是否可执行