look321 发表于 2018-8-21 11:42:13

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


[*]  $()、``用来作命令替换
[*]  ${ }用来作变量替换(以下内容来自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}:第一个元素
[*]  ${#A[@]}或${#A
[*]}:数组元素的个数

  3.    $(()) 用来做运算
    $ a=5;b=7  
    $ echo $((a+b))
  
    12
  4.   (())可以重定义变量值
  a=5; ((a++)) 可将 $a 重定义为6


页: [1]
查看完整版本: shell之 $()、``、${ }、$(( ))与(())