Shell编程1_变量、参数和数组

目录

一、从变量开始

1.环境变量

export命令

2.系统自带的环境变量

3、变量的定义和赋值

二、使用参数

参数的获取

三、数组的基本使用

1.数组的定义

2.数组的删除

3.数组的切片和替换

4.关联数组


一、从变量开始

Shell变量:变量的定义、使用、更新、删除、命名规范、赋值规范

Shell变量的分类:局部变量、环境变量、全局变量

1.环境变量

Linux是一个多租户的操作系统,针对不同的用户都会有一个专有的运行环境

对所有用户生效的环境变量    /etc/profile
对特定用户生效的环境变量    ~/.bashrc或者~/.bash_profile
临时有效的环境变量         脚本或命令使用export  

export命令

Linux export 命令用于设置或显示环境变量。

在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。

export [-fnp][变量名称]=[变量设置值]

参数说明

  • -f  代表[变量名称]中为函数名称。
  • -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
  • -p  列出所有的shell赋予程序的环境变量。
export -p //列出当前的环境变量

2.系统自带的环境变量

列表一

Shell编程1_变量、参数和数组_第1张图片

列表二

Shell编程1_变量、参数和数组_第2张图片

3、变量的定义和赋值

变量的值为指令,可用使用反撇号,或 $() 来引用

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中的特殊参数

Shell编程1_变量、参数和数组_第3张图片

参数的获取

脚本传递参数,就是在运行脚本的时候通过位置参数传递进脚本内,每个参数利用一个空格来进行分割,如果传递的参数本身就有空格,则可以利用 "" 来引起来,作为一个整体传递,在脚本内通过 $n 来获取。

三、数组的基本使用

数组的定义和元素获取

1.数组的定义

数组类似于变量定义,只不过将里面的值用小括号括起来,其中每个元素使用空格分割。Shell 是弱类型的,数组中元素的类型可以不一样,例如其中可以包含数字与字符串。

ARG1=(1 2 3 "hello Shell")

获取数组全部元素使用 ${ARG[*]} 或 ${ARG[@]}

获取数组全部下标使用 ${!ARG[*]} 或 ${!ARG[@]}

数组长度及数组中元素的个数,可以利用 ${#ARG[*]} 或 ${#ARG[@]}

2.数组的删除

删除数组可以使用 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[@]}

3.数组的切片和替换

通过 ${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

4.关联数组

关联数组是可以用字符串当作数组下标的一类数组,在使用关联数组前,必须先使用 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

你可能感兴趣的:(Linux)