• 变量的学习


    .变量的显示与设置

     

    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   #全部提换

  • 相关阅读:
    小总结:fibonacci数的产生
    pick the stone game
    温故知新的错题训练:Coin game
    《博弈论的诡计》
    思维+博弈论:字符串操作
    一下午的编程思索录
    2018中国大学生程序设计竞赛
    温故知新的经典贪心题目:今年暑假不AC?
    2019-2020新学的一些东西(持续更新)
    【半平面交】JZOJ3297. 【SDOI2013】逃考
  • 原文地址:https://www.cnblogs.com/zhengyipengyou/p/10264463.html
Copyright © 2020-2023  润新知