天天看點

Linux:bash的變量 處理

變量可以擴充處理,衍生出各種功能。

産生新的結果字元串,并不影響原變量! 查找替換、删除

a=/12/123/abc

從左至右 替換 第一次出現的地方:${a/12/}=>//123/abc

從左至右 替換 最左邊開始第一次出現的地方:${a/#12/}=>/12/123/abc,而${a/#\/12/}=>/123/abc

從右至左 替換 最右邊開始第一次出現的地方:${a/%abc/}=>/12/123/,而${a/%\/abc/}=>/12/123

替換 所有 出現的地方:${a//12/}=>//3/abc

模式比對删除

左模式、最短比對 删除:${a/#*12}=>/123/abc

左模式、最長比對 删除:${a/##*12}=>3/abc

右模式、最短比對 删除:${a/%12*/}=>/12/

右模式、最長比對 删除:${a/%%12*/}=>/

取變量的子字元串

從左邊起的開始位置向右截取字元串:${變量:開始位置(非負數)}:${a:2}=>/123/abc

從右邊起的,向左偏移到開始位置,截取右側字元串 【或者說 從右邊起的開始位置向左截取字元串】:${變量:開始位置(負數)}:${a:(-2)}=>bc,注意負數必須括起來

從左邊起的開始位置向右截取指定長度的字元串:${變量:開始位置(非負數):長度(非負數)}:${a:2:7}=>2/123/a

從右邊起的,向左偏移到開始位置,向右截取指定長度的字元串:${變量:開始位置(非負數):長度(非負數)}:${a:(-2):1}=>b。注意,如果長度大于等于開始位置的絕對值,就相當于由截取功能了

計算變量的子字元串長度

${#a}=11