zoukankan      html  css  js  c++  java
  • shell变量,字符串,数组

    一、shell变量定义:

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

    中间不能有空格,可以使用下划线;

    不能使用标点符号;

    不能使用bash里的关键字。

    变量使用:

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

    your_name="test"
    echo $your_name
    echo ${your_name}

    花括号可以省略,但以下情况需要添加:

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

    不然解释器会把$skillScript当成一个变量。

    只读变量:

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

    删除变量:

    使用unset命令可以删除变量。

    #!/bin/sh
    
    test="11111"
    readonly test
    test="22222"  #报错,不可修改
    
    unset test
    echo $test    #输出为空,变量已删除

    运行shell时,会同时存在三种变量:

    (1)局部变量,在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量;

    (2)环境变量,包括shell启动的程序,都能访问环境变量;

    (3)shell变量,由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量。

    二、shell字符串

    字符串可以用单引号,也可以用双引号,也可以不用引号。

    str='this is a string'

    单引号限制:

    单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;

    单引号字符串中不能出现单独一个的单引号(也不能使用转义符)。

    双引号:

    your_name="test"
    str="Hello, I know you are "$your_name"! 
    "
    echo -e $str    # -e参数表明处理特殊字符,不会当成一般文字输出,此处表示换行而不直接输出"
    "
    
    输出为:
    Hello, I know you are "test"!

    双引号优点:引号里可以有变量,可以出现转义字符。

    获取字符串长度:

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

    提取子字符串:

    str="Hello, I know you!"
    echo ${str:1:4}  #输出从第2个字符开始的4个字符  输出ello

    查找子字符串:

    str="Hello, I know you!"
    echo `expr index "$str" l`  #输出 3  注意和提取字符串的索引区别

    三、shell数组

    bash支持一维数组,下标由0开始,下标可以是整数或算术表达式。

    定义数组:

    array_name=(value0 value1 value2 value3)
    或者
    array_name=(
    value0
    value1
    value2
    value3
    )
    或单独定义数组的各个分量
    array_name[0]=value0
    array_name[1]=value1
    array_name[n]=value

    读取数组:

    ${数组名[下标]}

    例如:

    value=${array_name[1]}
    使用@符号可以获取数组中的所有元素,如下:
    echo ${array_name[@]}

    获取数组长度:和获取字符串长度的方法相同

    length=${#array_name[@]}  #取得数组元素的个数
    #或者
    length=${#array_name[*]}
    
    len=${#array_name[n]} #获取数组单个元素的长度
  • 相关阅读:
    Asp.Net api接口
    Android Studio 插件官网
    Android官方培训课程中文版(v0.9.5)
    asp.net:验证控件中ValidationExpression的写法
    asp.net:录入数据库的中文变问号
    asp.net:repeater嵌套(常用于新闻等在首页归类显示)
    asp.net:用类来后台绑定数据源
    代码编写横屏的UIView
    MFC去掉win7玻璃效果
    iOS UITableView
  • 原文地址:https://www.cnblogs.com/sssblog/p/10185330.html
Copyright © 2011-2022 走看看