变量的学习

.变量的显示与设置

 

1.变量的显示:echo

例:

[root@server3 mnt]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

 

[root@server3 mnt]# echo ${PATH}

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

以上两种皆可一显示

 

2.变量设置规则:

    a.变量与变量内容以一个=来连接

    b.等号两边不能直接接空格符

    c.便令名称只能是英文或者数字,但是开头字符不能是数字

    d.便令内容若有空格符可使用双引号"或单引号'将变量内容结合起来,

    e.可使用转义字符\将特殊符号如$,\,空格符转变成一般字符

    f.在一串命令中,还需要通过其他命令提供的信息,可以使用反单引号`命令`$(命令)

    g.若该变量为了增加便令内容时,则可使用$变量名称${变量}累加内容。如:

        PATH=$PATH:/home/bin

    h.若该变量需要在其他子进程执行,则需要以export来使变量变成环境变量

    i.通常大写字符为系统默认变量,自行设置变量可以使用小写字符。

    j.去销消变量的方法为使用unset 变量名称

 

.变量键盘读取,数组与声明:read,array,declare

 

1.read

格式:read 【-pt】 variable

-p:后面可接提示符

-t:后面可以接等待的秒数

 

2.declare/typeset

格式:declare 【-aixr】variable

-a:将后面名为variable的变量定义为数组(array)类型

-i:将后面名为variable的变量定义为整数数组(integer)类型

-x:用法与export一样,就是将后面的variable变成环境变量

-r:将变量设置成为readonly类型,该变量不可被更改内容,也不能重设

 

例:

[root@server3 mnt]# sum=200+50+30

[root@server3 mnt]# echo $sum

200+50+30

[root@server3 mnt]# declare -i sum=200+50+30

[root@server3 mnt]# echo $sum

280

 

*变量类型默认为字符串,所以若不指定变量类型,则1+2为一个字符串而不是计算式,所以第一个会时那样的执行结果

*bash环境中的树枝运算,默认最多仅能达到证书类型,所以1/3结果是0

 

例:

a.将sum变成环境变量

[root@server3 mnt]# declare -x sum

[root@server3 mnt]# export | grep sum

declare -ix sum="280"

b.将sum变成只读属性

[root@server3 mnt]# declare  -r sum

[root@server3 mnt]# sum=happy

-bash: sum: readonly variable

c.将sum从环境变量变成自定义变量

[root@server3 mnt]# declare  +x sum

[root@server3 mnt]# declare -p sum       #-p可以单独列出变量类型

declare -irx sum="280"

 

 

.与文件系统及程序的限制关系:ulimit

    为了预防过多的用户同时登陆或使用文件而导致系统挂掉,我们可以通过ulimit命令来限制用户的某些系统资源,包括可以打开的文件,可以使用的cpu时间,可以使用的内存总量等等。

ulimit

格式:ulimit【-SHacdfltu】 【配额】

-H:hard limit,严格的设置,必定不能超过这个设置的数值

-S:soft limit,警告的设置,可以超过这个设置值,但若超过则有警告信息。在设置上,soft 通常会比hard小。

-a:后面不解任何参数,可列出所有限额进度

-c:当某些进程发生错误时,系统可能会将该进程在内存中的信息写成文件,这种文件被称为派错文件。此为限制每个内核文件的最大容量

-f:此shell可以创建的最大文件容量单位为KB

-d:进程可使用的最大断裂内存容量

-l:可用于锁定的内存量

-t:可使用的最大CPU的时间(s)

-u:单一用户可以使用的最大进程数量

 

.变量内容的删除,替代与替换

1.变量内容的删除与替换

    变量设置方式    说明

    ${变量#关键字}      若变量内容从头开始的数据符合关键字,则将符合的最短数据删除

    ${变量##关键字}     若变量内容从头开始的数据符合关键字,则将符合的最长数

据删除

    ${变量%关键字}      若变量内容从尾向前的数据符合关键字,则将符合的最短数

据删除

    ${变量%%关键字}     若变量内容从尾向前的数据符合关键字,则将符合的最长数

据删除

    ${变量/旧字符串/新字符串}若变量内容符合旧字符串,则第一个旧字符串会被新字符串替换

    ${变量//旧字符串/新字符串}若变量内容符合旧字符串,则全部旧字符串会被新字符>串替换

例:

*将前三个目录删掉

[root@server3 mnt]# path=$PATH

[root@server3 mnt]# echo $path

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@server3 mnt]# echo ${path#/*/usr/bin:}

/root/bin

[root@server3 mnt]# echo ${path#/*/usr/sbin:}

/usr/bin:/root/bin

 

*删除前面所有目录仅保留最后一个

[root@server3 mnt]# echo ${path#/*:}     #删除了第一个目录

/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@server3 mnt]# echo ${path##/*:}

/root/bin

 

*删除最后面的那个目录

[root@server3 mnt]# echo $path

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@server3 mnt]# echo ${path%:*bin}

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

 

*只保留第一个目录

[root@server3 mnt]# echo ${path%%:*bin}

/usr/local/sbin

 

*将自定义的path变量中的sbin变成SBIN

[root@server3 mnt]# echo ${path/sbin/SBIN}

/usr/local/SBIN:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin   #只变了一个

 

[root@server3 mnt]# echo ${path//sbin/SBIN}

/usr/local/SBIN:/usr/local/bin:/usr/SBIN:/usr/bin:/root/bin   #全部提换

猜你喜欢

转载自www.cnblogs.com/zhengyipengyou/p/10264463.html