一、变量===》人与内存沟通的中间件
变量分类
系统环境变量
1、本地变量:用户私有变量,只有用户可以使用,保存在家目录下的.bash_profire、.bashrc文件中
2、全局变量:所有用户都可以使用,存放在/etc/profire 、 /etc/bashrc
注:定义全局变量前要加export
用户自定义变量
3、用户自定义变量: 用户自定义的变量,比如脚本中的变量。
变量格式:变量名=值
命名规则:
只能用英文字母、数字、下划线。
变量名不能以数字开头,不能有空格、不能使用标点符号。
不能使用bash里的关键字
4、取消自定义变量:unset 格式:unset 变量名
注:写在配置文件里的变量用unset是临时取消
5、定义永久变量:把变量写到配置文件中。
本地变量:保存在家目录下的.bash_profire、.bashrc文件中
全局变量:存放在/etc/profire 、 /etc/bashrc 注:变量前加export
注:写到配置文件的变量要重新加载才能生效
本地变量:执行source ~/.bash_profire 或 . ~/.bash_profire
全局变量:执行source /etc/profire 或 . /etc/profire
6、读取变量内容
读取变量内容符:$ 格式:$变量名。
二、数组:一个变量存多个数值
1)基本数组:
1、数组可以让用户赋予多个值,需要读取数据时只需要通过索引调用就可以方便读出啦
2、数组语法:与变量类似
数组名称=(元素1 元素2 元素3 …)
3、数组的读出:
${数组名称[索引]}
索引默认是元素在数组中的排队编号,默认第一个从0开始
4、数组的赋值
方法1:一次赋一个值
array0[0]=\’tom\’
array0[1]=\’jarry\’
array0[2]=\’natasha\’
方法2: 一次赋多个值
# array2=(tom jack alice)
# array3=(`cat /etc/passwd`) 希望是将该文件中的每一个行作为一个元素赋值给数组array3
# array4=(`ls /var/ftp/Shell/for*`)
# array5=(tom jack alice \”bash shell\”)
5、查看系统声明过的数组
#declare -a
6、访问查看自定义数组
例:数组array1
# echo ${array1[0]} 访问数组中的第一个元素
# echo ${array1[@]} 访问数组中所有元素 等同于 echo ${array1[*]}
# echo ${#array1[@]} 统计数组元素的个数
# echo ${!array2[@]} 获取数组元素的索引
# echo ${array1[@]:1} 从数组下标1开始
# echo ${array1[@]:1:2} 从数组下标1开始,访问两个元素
2)关联数组:可以允许用户自定义数组索引,使用更加方便
1、首先声明一个关联数组
格式:declare -A 数组名
查看:declare -A
2、关联数组赋值:
方法一: 一次赋一个值
数组名[索引]=变量值
# ass_array1[index1]=pear
# ass_array1[index2]=apple
# ass_array1[index3]=orange
# ass_array1[index4]=peach
方法二: 一次赋多个值
# ass_array2=([index1]=tom [index2]=jack [index3]=alice [index4]=\’bash shell\’)
3、访问数组元素
# echo ${ass_array2[index2]} 访问数组中的第二个元数
# echo ${ass_array2[@]} 访问数组中所有元数 等同于 echo ${array1[*]}
# echo ${#ass_array2[@]} 获得数组元数的个数
# echo ${!ass_array2[@]} 获得数组元数的索引
三、shell中的五大运算
1、数学整数比较运算
运算符解释 -eq 等于 -gt 大于 -lt 小于 -ge 大于或等于 -le 小于或等于 -ne 不等于
2、字符串比较运算
运算符解释,注意字符串一定别忘了使用引号引起来 == 等于 != 不等于 -n 检查字符串的长度是否大于0 -z 检查字符串的长度是否为0
3、赋值运算
= 赋值运算符 例:a=8 b=\”liu\”
注意:与字符串比较运算的区别
4、文件的比较与检查
-d 检查文件是否存在且为目录 -e 检查文件是否存在 -f 检查文件是否存在且为文件 -r 检查文件是否存在且可读 -s 检查文件是否存在且不为空 -w 检查文件是否存在且可写 -x 检查文件是否存在且可执行
-O 检查文件是否存在并且被当前用户拥有 -G 检查文件是否存在并且默认组为当前用户组 file1 -nt file2 检查file1是否比file2新 file1 -ot file2 检查file1是否比file2旧
5、逻辑运算(常用)
逻辑与运算 && 逻辑或运算 || 逻辑非运算 ! 逻辑运算注意事项: 逻辑与 或 运算都需要两个或以上条件,逻辑非运算只能一个条件。 口诀: 逻辑与运算 真真为真 真假为假 假假为假 逻辑或运算 真真为真 真假为真 假假为假 逻辑非运算 非假为真 非真为假
四、if判断语句
1)语法一:一种情况判断,单if语句
格式:
if [ condition ]
then
codition
fi
#注:condition(条件)值为true或false
2)语法二:两种情况判断
if [ condition ]
then
condition
else
condition
fi
3)语法三:三种情况判断
1、嵌入式写法
if [ condition ]
then
condition
else
if [ condition ]
then
condition
else
condition
fi
fi
2、if-then-elif语句写法
if [ condition ]
then
condition
elif [ condition ]
then
condition
else
condition
fi
五、if的高级应用
1、使用双小括号(())可以在表达式中值入数学表达式
例:
if (( 2*4>8 ));then
echo \”yes\”
else
echo \”no\”
fi
2、使用双方括号[[]]可以字符串匹配
for n in ra rb rc dd
do
if [[ $n == r* ]];then
echo $n
fi
done