• shell script 之一:变量和赋值


    变量命名:

    - 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。

    - 中间不能有空格,可以使用下划线(_)。

    - 不能使用标点符号。

    - 不能使用bash里的关键字(可用help命令查看保留关键字)。


      无效的变量命名:

        ?var=123
        user*name=runoob


    赋值变量:

    1:
    直接赋值

     name="lily"
    

      

    2:

    利用语句赋值 

    for i in `ls /boot`;do echo $i ; done
    

    #将/boot目录下的文件名循环赋值给i并打印,可以用$(ls /boot)代替`ls /boot`

    3:
    间接赋值read -p

    [root@test ~]# read -p "your name?" name1 name2
    your name?666 888 
    [root@test ~]# echo $name1 $name2
    666 888
    

      

    使用变量
      利用$var或者${var} 调用变量,加{}可以帮助解释器识别变量的边界。
      如$varlog会找varlog的变量,${var}log就没问题。

     



    只读变量

    var=abc
    readonly abc
    var=ab 
    -bash: i: readonly variable   #报错,只读变量的值不能被改变和删除


    删除变量

    unset var  #变量前不加$符
    

      


    ***************************************
    变量类型-字符串

    1:
    单引号''

      name='my name is $i'
      echo $name
      my name is $i
    

      eg:echo $name 会显示 my name is $i,单引号内的变量不会被读取

      单引号字符串的限制:

      单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
      单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

     2: 

    双引号""
     

    name="my name is $i"
    

      双引号的优点:

      双引号里可以有变量

      双引号里可以出现转义字符

    3:

    获取字符段长度 ${#var}

      name=sunny
      echo ${#name}
      5 #返回字符段长度5
    

     

    4:

    提取字符串,从第n个字符开始提取m个字符${var:n:m}

      name="my name is sunny"
      echo ${name:11:5}      #从第11个字符起提取5个字符。
      sunny
    

      

    **********************************************************************
    变量类型-数组
    1:
    定义数组
    数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。

    array={v1 v2 v3 v4}
    或者
    array=(
    v1
    v2
    v3
    )
    

      

    2:
    读取数组,注意下标由0开始编号
    ${数组名[下标]}

    echo ${array[0]}
    v1

    获取数组的所有元素

    echo ${array[@]}
    

      

    # 取得数组元素的个数

    length=${#array_name[@]}
    

      

    # 取得数组单个元素的长度

    length=${#array_name[@]}
    


  • 相关阅读:
    树莓派远程监控的实现
    frp内网渗透实现ssh外网访问家里树莓派(树莓派raspbian系统+腾讯云contos7)
    Linux下远程连接断开后如何让程序继续运行
    windows 远程连接登录树莓派桌面
    树莓派设置frpc开机启动
    树莓派 raspbian Linux 系统命令行 快捷键
    MyBatis如何防止SQL注入
    Apache POI导出excel表格
    SpringBoot文件上传
    SpringBoot整合定时任务
  • 原文地址:https://www.cnblogs.com/sunny18/p/8601949.html
Copyright © 2020-2023  润新知