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

shell之 $()、``、${ }、$(( ))与(()),布布扣,bubuko.com

时间: 2024-12-29 11:19:25