变量的学习
Posted zhengyipengyou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量的学习相关的知识,希望对你有一定的参考价值。
一.变量的显示与设置
1.变量的显示:echo
例:
[[email protected] mnt]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] 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类型,该变量不可被更改内容,也不能重设
例:
[[email protected] mnt]# sum=200+50+30
[[email protected] mnt]# echo $sum
200+50+30
[[email protected] mnt]# declare -i sum=200+50+30
[[email protected] mnt]# echo $sum
280
*变量类型默认为“字符串”,所以若不指定变量类型,则1+2为一个“字符串”而不是“计算式”,所以第一个会时那样的执行结果
*bash环境中的树枝运算,默认最多仅能达到证书类型,所以1/3结果是0
例:
a.将sum变成环境变量
[[email protected] mnt]# declare -x sum
[[email protected] mnt]# export | grep sum
declare -ix sum="280"
b.将sum变成只读属性
[[email protected] mnt]# declare -r sum
[[email protected] mnt]# sum=happy
-bash: sum: readonly variable
c.将sum从环境变量变成自定义变量
[[email protected] mnt]# declare +x sum
[[email protected] 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.变量内容的删除与替换
变量设置方式 说明
${变量#关键字} 若变量内容从头开始的数据符合“关键字”,则将符合的最短数据删除
${变量##关键字} 若变量内容从头开始的数据符合“关键字”,则将符合的最长数
据删除
${变量%关键字} 若变量内容从尾向前的数据符合“关键字”,则将符合的最短数
据删除
${变量%%关键字} 若变量内容从尾向前的数据符合“关键字”,则将符合的最长数
据删除
${变量/旧字符串/新字符串}若变量内容符合“旧字符串”,则第一个旧字符串会被新字符串替换
${变量//旧字符串/新字符串}若变量内容符合“旧字符串”,则全部旧字符串会被新字符>串替换
例:
*将前三个目录删掉
[[email protected] mnt]# path=$PATH
[[email protected] mnt]# echo $path
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] mnt]# echo ${path#/*/usr/bin:}
/root/bin
[[email protected] mnt]# echo ${path#/*/usr/sbin:}
/usr/bin:/root/bin
*删除前面所有目录仅保留最后一个
[[email protected] mnt]# echo ${path#/*:} #删除了第一个目录
/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] mnt]# echo ${path##/*:}
/root/bin
*删除最后面的那个目录
[[email protected] mnt]# echo $path
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] mnt]# echo ${path%:*bin}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
*只保留第一个目录
[[email protected] mnt]# echo ${path%%:*bin}
/usr/local/sbin
*将自定义的path变量中的sbin变成SBIN
[[email protected] mnt]# echo ${path/sbin/SBIN}
/usr/local/SBIN:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin #只变了一个
[[email protected] mnt]# echo ${path//sbin/SBIN}
/usr/local/SBIN:/usr/local/bin:/usr/SBIN:/usr/bin:/root/bin #全部提换
以上是关于变量的学习的主要内容,如果未能解决你的问题,请参考以下文章