zoukankan      html  css  js  c++  java
  • Linux学习--2

    字符串

    字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似

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


    双引号
    双引号的优点:

    双引号里可以有变量
    双引号里可以出现转义字符
    拼接字符串
    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`

    转义字符
    如果表达式中包含特殊字符,Shell 将会进行替换。例如,在双引号中使用变量就是一种替换,转义字符也是一种替换。

    举个例子:

    #!/bin/bash
    a=10
    echo -e "Value of a is $a "
    运行结果:

    Value of a is 10

    这里 -e 表示对转义字符进行替换。如果不使用 -e 选项,将会原样输出:

    Value of a is 10

    -e 在命令窗口运行,放入文本就是-e
    echo 命令的 -E 选项禁止转义,默认也是不转义的;使用 -n 选项可以禁止插入换行符。
    表达式变量替换
    变量替换可以根据变量的状态(是否为空、是否定义等)来改变它的值

    可以使用的变量替换形式:

    可以使用的变量替换形式

    请看下面的例子:

    #!/bin/bash

    echo ${var:-"Variable is not set"}
    echo "1 - Value of var is ${var}"

    echo ${var:="Variable is not set"}
    echo "2 - Value of var is ${var}"

    unset var
    echo ${var:+"This is default value"}
    echo "3 - Value of var is $var"

    var="Prefix"
    echo ${var:+"This is default value"}
    echo "4 - Value of var is $var"

    echo ${var:?"Print this message"}
    echo "5 - Value of var is ${var}"
    运行结果:

    Variable is not set
    1 - Value of var is
    Variable is not set
    2 - Value of var is Variable is not set

    3 - Value of var is
    This is default value
    4 - Value of var is Prefix
    Prefix
    5 - Value of var is Prefix


    表达式命令替换
    命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出。

    命令替换的语法:

    $(command)
    或者

    `command`
    注意是反引号,不是单引号,这个键位于 Esc 键下方。

    推荐用$(command)的方式,因为反引号在某些情况下会有问题。

    下面的例子中,将命令执行结果保存在变量中:

    #!/bin/bash
    DATE=$(date)
    echo "Date is $DATE"
    USERS=$(who | wc -l)#这是字母L
    echo "Logged in user are $USERS"
    运行结果:

    Date is Thu Jul 2 03:59:57 MST 2015
    Logged in user are 1

    数组的定义
    Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。

    bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。
    数组的读写
    读取数组元素值的一般格式是:

    ${array_name[index]}
    例如:

    valuen=${array_name[2]}
    举个例子:

    #!/bin/bash
    NAME[0]="Zara"
    NAME[1]="Qadir"
    NAME[2]="Mahnaz"
    NAME[3]="Ayan"
    NAME[4]="Daisy"
    echo "First Index: ${NAME[0]}"
    echo "Second Index: ${NAME[1]}"

  • 相关阅读:
    一段关于生成器代码的解读
    (十三)内置函数
    (十二)生成器和生成器函数,推导式和表达式
    (十一)函数名的使用,闭包,迭代器
    (十)函数的动态传参,作用域
    (九)函数
    (八)文件操作
    (七)深浅拷贝
    (六)id(),is和==,内存常量
    (五)字典,集合
  • 原文地址:https://www.cnblogs.com/liuyangfirst/p/aa.html
Copyright © 2011-2022 走看看