zoukankan      html  css  js  c++  java
  • shell基础操作

    一、字符串

    字符串是shell编程中最常用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。

    单引号

    name='xiaoxi'

    单引号的限制:

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

    • 单引号字串中不能出现单引号(对单引号使用转义符也不行)。

    双引号

    name="xiaoxi"

    uname="${name}"test"

    双引号的优点:

    • 双引号里可以包含变量

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

    不加引号

    name=xiaoxi

    uname=${name}"test

      不加引号和双引号效果类似,只是开头和结尾没有双引号。

    拼接字符串

    name='xiaoxi'

    uname="${name}test"

    uname2="$name$uname"

    echo $name $uname $uname2

    输出:

    [root@xiaoxitest ~]# ./test.sh
    xiaoxi xiaoxitest xiaoxixiaoxitest

    获取字符串长度

    name='xiaoxi'

    echo ${#name}

    输出:

    [root@xiaoxitest ~]# ./test.sh
    6

    提取字符串

    name='xiaoxitest'

    echo ${name:0:6}

    输出:

    [root@xiaoxitest ~]# ./test.sh
    xiaoxi

    查找字符串

    name='xiaoxitest'
    echo `expr index ${name}  xiaoxi`

    输出:

    [root@xiaoxitest ~]# ./test.sh
    1    #1表示存在,0表示不存在

    二、转义字符

    name='xiaoxitest'
    echo -e "xiaoxi test"

    输出:

    [root@xiaoxitest ~]# ./test.sh
    xiaoxi
    test

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

    xiaoxi test

    其它转义字符也可以用于echo中:

    三、表达式

    将命令结果存储在变量中

    name=`who | awk {'print $1'}`  #注意是反引号,位于Esc键下方
    count=$(who | wc -l)
    echo -e "The user login count: ${count} ${name}"

    输出:

    [root@xiaoxitest ~]# ./test.sh
    The user login count: 2
    root
    xyp

    四、数组定义

    bash仅支持一维数组,并且没有限制数组的大小。用括号表示数组,数组元素用“空格”符号或换行分隔。

    例1:

    name=(aa bb cc)

    例2:

    name=(

    aa

    bb

    cc

    )

    也可单独定义数组的各个元素

    name[0]=aa

    name[1]=bb

    name[3]=cc

    五、数组读写

    例:

    #!/bin/bash
    sar=(aa bb cc) echo sar:${sar[*]} name[0]=aa name[1]=bb name[3]=cc uname=(${name[1]} dd) echo "name:${name[1]} uname:${uname[*]}"

    输出:

    [root@xiaoxitest ~]# ./test.sh
    sar:aa bb cc
    name:bb uname:bb dd

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

    ${name[*]}

    ${name[@]}

  • 相关阅读:
    Trie图
    Bestcoder Round#45
    Codeforces Round#308
    bestcoder44#1002
    LCA最近公共祖先 Tarjan离线算法
    HYSBZ 1269文本编辑器 splay
    NOI2005维修数列 splay
    hdu3487 伸展树(区间搬移 区间旋转)
    poj3580 伸展树(区间翻转 区间搬移 删除结点 加入结点 成段更新)
    hdu1890 伸展树(区间反转)
  • 原文地址:https://www.cnblogs.com/xiaoxitest/p/6423614.html
Copyright © 2011-2022 走看看