zoukankan      html  css  js  c++  java
  • shell 变量

    1. 定义变量

    定义变量时,变量名不加美元符号($),如:

    your_name="laosijiyaokaiche"

    注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。

    除了显式地直接赋值,还可以用语句给变量赋值,如:

    for file in `ls /etc`

    2.只读变量

    使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

    下面的例子尝试更改只读变量,结果报错:

    #!/bin/bash
    myUrl="https://www.google.com"
    readonly myUrl
    myUrl="https://www.runoob.com"

    3. 使用变量

    使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

    your_name="laosijiyaokaiche"
    echo $your_name
    echo ${your_name}

    变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

    for skill in Ada Coffe Action Java; do
    	echo "I am good at ${skill}Script"
    done
    

    如果不给skill变量加花括号,写成echo "I am good at $skillScript",解释器就会把$skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

    推荐给所有变量加上花括号,这是个好的编程习惯。IntelliJ IDEA编写shell script时,IDE就会提示加花括号。

    4. 重定义变量

    已定义的变量,可以被重新定义,如:

    your_name="laosijiyaokaiche" 
    echo $your_name your_name="alibaba"
    echo $your_name

    这样写是合法的,但注意,第二次赋值的时候不能写$your_name="alibaba",使用变量的时候才加美元符。

    5.字符串

    字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了,哈哈),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。

    单引号

    str='this is a string'
    

    单引号字符串的限制:

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

    双引号

    your_name='qinjx'
    str="Hello, I know your are "$your_name"! 
    "
    
    • 双引号里可以有变量
    • 双引号里可以出现转义字符

    字符串操作

    拼接字符串

    your_name="qinjx"
    greeting="hello, "$your_name" !"
    greeting_1="hello, ${your_name} !"
    
    echo $greeting $greeting_1
    

    获取字符串长度:

    string="abcd"
    echo ${#string} #输出:4
    

    提取子字符串

    string="alibaba is a great company"
    echo ${string:1:4} #输出:liba
    

    查找子字符串

    string="alibaba is a great company"
    echo `expr index "$string" is`#输出:3,这个语句的意思是:找出字母i在这名话中的位置,要在linux下运行,mac下会报错

    6.数组

    bash支持一维数组(不支持多维数组),并且没有限定数组的大小。

    类似于 C 语言,数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。

    定义数组

    在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:

    数组名=(值1 2 ... n) 

    例如:

    array_name=(value0 value1 value2 value3)

    或者

    array_name=(
    value0
    value1
    value2
    value3
    )

    还可以单独定义数组的各个分量:

    array_name[0]=value0
    array_name[1]=value1
    array_name[n]=valuen

    可以不使用连续的下标,而且下标的范围没有限制。

    读取数组 

    读取数组元素值的一般格式是:

    ${数组名[下标]}

    例如:

    valuen=${array_name[n]}

    使用 @ 符号可以获取数组中的所有元素,例如:

    echo ${array_name[@]} 

    获取数组的长度

    获取数组长度的方法与获取字符串长度的方法相同,例如:

    # 取得数组元素的个数
    length=${#array_name[@]}
    # 或者
    length=${#array_name[*]}
    # 取得数组单个元素的长度
    lengthn=${#array_name[n]}
  • 相关阅读:
    使用Jpath 对Json字符串进行解析
    使用PowerDesigner 生成mysql 数据库脚本
    在windows 环境下Kratos 代码示例搭建
    Java jdbc无法连接sql server和sa登录失败的坑
    win10 安装sql server 2008 提示重新启动计算机失败
    RNN计算loss function
    ReLU 函数非线性
    TopK 问题
    mysql初始化问题(版本 8.0.11)
    投资理财的66条军规
  • 原文地址:https://www.cnblogs.com/honglingjin/p/13668267.html
Copyright © 2011-2022 走看看