首页 > 代码库 > shell之 $()、``、${ }、$(( ))与(())

shell之 $()、``、${ }、$(( ))与(())


  1. $()、``用来作命令替换

  2. ${ }用来作变量替换(以下内容来自shell十三问)

      (1).    变量的界定

        $ A=B
        $ echo $AB

        该命令执行时,将AB整体看作一个变量,而不是变量$A与字母B的连接。

        $ A=B
        $ echo ${A}B

        该命令执行后将输出:BB


       (2).    特殊功能,对于字符串的处理有很大的帮助。

       首先,定义变量 file=/dir1/dir2/dir3/my.file.txt,下面的命令将取得不同的值。

  •         根据字串中包含的字符进行提取 :# 与 % 

    • ${file#*/}:去掉第一个“/”及其左边的字串           -> /dir1/dir2/dir3/my.file.txt

    • ${file##*/}:去掉最后一个“/”及其左边的字串      ->my.file.txt

    • ${file%/*}:去掉最后一个“/”及其右边的字串        ->/dir1/dir2/dir3

    • ${file%%/*}:去掉第一个"/"及其右边的字串        ->空值

  •        提取指定位置指定长度字符

    • ${file:0:5}:提取最左边的5个字符          ->/dir1

    • ${file:5:5}:提取第5个字符右边连续5个字符 ->/dir2

  •         字符串替换

    • ${file/dir/path}:将第一个dir替换为path             ->/path1/dir2/dir3/my.file.txt

    • ${file//dir/path}:将全部dir替换为path              ->/path1/path2/path3/my.file.txt

  •         计算变量值的长度:${#var}

    • ${#file}                                                       ->27  即strlen(file)


          (3).    数组相关


    • A="a b c def":变量的值为一个字串

    • A=(a b c def):将$A定义为数组



    • ${A[@]}或${A[*]}:得到全部数组

    • ${A[0]}:第一个元素

    • ${#A[@]}或${#A[*]}:数组元素的个数

3.    $(()) 用来做运算

    $ a=5;b=7
    $ echo $((a+b))
    12

4.   (())可以重定义变量值

    a=5; ((a++)) 可将 $a 重定义为6

本文出自 “linux” 博客,请务必保留此出处http://4983206.blog.51cto.com/4973206/1436474