目录
一、从变量开始
1.环境变量
export命令
2.系统自带的环境变量
3、变量的定义和赋值
二、使用参数
参数的获取
三、数组的基本使用
1.数组的定义
2.数组的删除
3.数组的切片和替换
4.关联数组
Shell变量:变量的定义、使用、更新、删除、命名规范、赋值规范
Shell变量的分类:局部变量、环境变量、全局变量
Linux是一个多租户的操作系统,针对不同的用户都会有一个专有的运行环境
对所有用户生效的环境变量 /etc/profile
对特定用户生效的环境变量 ~/.bashrc或者~/.bash_profile
临时有效的环境变量 脚本或命令使用export
Linux export 命令用于设置或显示环境变量。
在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。
export [-fnp][变量名称]=[变量设置值]
参数说明:
export -p //列出当前的环境变量
列表一
列表二
变量的值为指令,可用使用反撇号,或 $() 来引用
DATE=`date`
DATE=$(date)
变量的赋值分为:直接赋值、单引号赋值、和双引号赋值
直接赋值变量:DIR=/tmp,其中 DIR 为变量名,/tmp 为值
单引号赋值:单引号赋值方式为单引号里面的内容是什么就输出什么,此种赋值方式适用于不希望解析变量的场景,仅显示纯字符串。
[root@master ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@master ~]# DIR='$PATH'
[root@master ~]# echo $DIR
$PATH
双引号赋值:双引号赋值可以解析引号内的变量或执行命令,即不是将双引号中的变量名和命令原样输出,而是解析其中变量的内容,然后进行输出。
[root@master ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@master ~]# DIR="$PATH"
[root@master ~]# echo $DIR
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Shell参数:位置参数、特殊参数、参数传递
shell中的特殊参数
脚本传递参数,就是在运行脚本的时候通过位置参数传递进脚本内,每个参数利用一个空格来进行分割,如果传递的参数本身就有空格,则可以利用 ""
来引起来,作为一个整体传递,在脚本内通过 $n
来获取。
数组的定义和元素获取
数组类似于变量定义,只不过将里面的值用小括号括起来,其中每个元素使用空格分割。Shell 是弱类型的,数组中元素的类型可以不一样,例如其中可以包含数字与字符串。
ARG1=(1 2 3 "hello Shell")
获取数组全部元素使用 ${ARG[*]}
或 ${ARG[@]}
。
获取数组全部下标使用 ${!ARG[*]}
或 ${!ARG[@]}
。
数组长度及数组中元素的个数,可以利用 ${#ARG[*]}
或 ${#ARG[@]}
。
删除数组可以使用 unset,unset ARG1[num]
可以删除对应下标的数组元素,如果不带下标则删除数组的全部元素。
[root@master scripts]# echo ${ARG1[@]}
100 3 hello Shell 10
[root@master scripts]# unset ARG1[0] //删除下标为0的元素
[root@master scripts]# echo ${ARG1[@]}
3 hello Shell 10
[root@master scripts]# unset ARG1 //删除整个数组元素
[root@master scripts]# echo ${ARG1[@]}
通过 ${AEG1[@或*]:起始位置:长度}
对原数组进行切片,返回的为字符串,例如:
[root@master scripts]# echo ${ARG1[@]}
1 2 3 hello Shell
[root@master scripts]# echo ${ARG1[@]:0:2} //从第1个元素往后2个元素进行切片
1 2
替换数组中的某一个元素,例如我们将 ARG1
数组中的第 1 个元素替换为 110。${ARG1[@]/1/110}
[root@master scripts]# echo ${ARG1[@]}
1 2 3 hello Shell
[root@master scripts]# echo ${ARG1[@]/1/110}
110 2 3 hello Shell
关联数组是可以用字符串当作数组下标的一类数组,在使用关联数组前,必须先使用 declare -A
声明它,例如:
[root@master ~]# declare -A ARGFILE //定义管理数组
[root@master ~]# ARGFILE=([name1]=Shell [name2]=linux [name3]=arg) //关联数组元素赋值
[root@master ~]# echo ${ARGFILE[@]} //查看所有元素
arg linux Shell
[root@master ~]# echo ${ARGFILE[name1]} //查看索引为name1的元素值
Shell