shell语法基础
1. 变量
1.1 变量的分类
全局变量:所有的用户都可以使用,保存在 /etc/profile、/etc/bashrc文件中。在开机之后,用户登陆之前,把前面文件中的变量加载到内存中,等待用户使用。
本地变量:用户私有变量,只有本用户可以使用,保存在用户家目录下的 .bash_profile、.bashrc文件中。在用户登录成功之后才会加载到内存中。
用户自定义变量:由用户自定义,比如脚本中的变量。
1.2 定义变量
变量格式: 变量名=值 (注意:在shell编程中的变量名和等号之间不能有空格)
变量命名规则:
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头;
中间不能有空格,可以使用下划线(_);
不能使用标点符号;
不能使用bash里的关键字(可用help命令查看保留关键字);
建议变量名全部用大写,和命令区分开
定义全局变量 -- export
[ ~]# export UNAME="xiaoming" [ ~]# echo $UNAME xiaoming
这种方式设置的变量是一次性变量,系统重启后就会丢失。如果希望可以永久使用,可以将需要定义的变量写入变量文件中即可。
定义永久变量 -- 变量文件
定义全局的永久变量:vim /etc/profile,添加全局变量 export UNAME="xiaoming",重启配置文件生效 source /etc/profile 定义本地的永久变量:vim ~/.bash_profile,添加本地变量 UNAME="xiaoming",重启配置文件生效 source ~./bash_profile
定义普通变量 -- 变量赋值
[ ~]# UNAME="xiaoming" [ ~]# SCHOOL=‘nanjing‘ [ ~]# AGE=25 [ ~]# SCORE=99
1.3 读取变量内容
读取方法: echo $变量名
[ ~]# UNAME="xiaoming" [ ~]# echo $UNAME xiaoming
1.4 取消变量 -- unset
unset取消不了永久变量,在重启之后又会恢复,除非在变量文件中删除。
[ ~]# unset UNAME [ ~]# [ ~]# echo $UNAME
2. 数组
2.1 基本数组
基本数组,即数组索引从0开始,不允许用户自定义索引的数组。
1. 基本数组语法: 数组名称=(元素1 元素2 元素3 元...)
2. 基本数组查询: echo ${数组名称[index]}
3. 基本数组赋值:数组名[index]=元素值
4. 查看所有数组: declare -a
[ ~]# NAME_ARRAY=(‘a‘ ‘b‘ ‘c‘ ‘d‘) [ ~]# declare -a declare -a ARRAY1=‘([0]="a" [1]="b" [2]="c" [3]="d" [4]="e" [5]="f")‘ declare -a NAME_ARRAY=‘([0]="a" [1]="b" [2]="c" [3]="d")‘ ...
5. 访问数组元素:
echo ${NAME_ARRAY[0]} # 访问数组第一个元素 echo ${NAME_ARRAY[@]} 或 echo ${NAME_ARRAY[*]} # 访问数组中的所有元素 echo ${#NAME_ARRAY[@]} # 统计数组的长度 echo ${!NAME_ARRAY[@]} # 获取数组的元素索引 echo ${NAME_ARRAY[@]:2} # 数组切片,从索引为2到结束的元素 echo ${NAME_ARRAY[@]:1:2} # 从索引为1开始获取两个元素
6. for循环遍历数组
pass
2.2 关联数组
关联索引,即允许用户自定义数组索引,使用起来更方便高效。
1. 关联数组语法:
# 声明一个关联数组变量 declare -A ASS_ARRAYASS_ARRAY=([index1]=‘元素1‘ [index2]=‘元素2‘ [index3]=‘元素3‘ [index]=...)
2. 关联数组查询:
[ ~]# declare -A ASS_ARRAY [ ~]# ASS_ARRAY=([name]=‘xiaoming‘ [age]=25 [gender]=‘male‘) [ ~]# echo ${ASS_ARRAY[name]} xiaoming [ ~]# echo ${ASS_ARRAY[gender]} male
3. 访问关联数组元素的长度、索引、切片等方法同基本数组一样。
4. 关联数组赋值(同基本数组):关联数组[index]=元素
[ ~]# ASS_ARRAY[score]=100 [ ~]# echo ${ASS_ARRAY[score]} 100