Shell 中字符串的操作总结

字符串长度

  • ${#string}
  • expr length $BASH
  • expr "$BASH" : '.*'

两个特殊用法

  • ${#*}和${#@}表示位置参数的个数
  • 对于数组来说, ${#array[*]}和${#array[@]}表示数组中元素的个数

匹配字符串开头的子串长度

  • expr match "$string" '$substring'
  • expr "$string" : '$substring'

索引

  • expr index $string $substring

提取子串

  • ${string:position}
  • ${string:position:length}
  • expr substr $string $position $length
  • expr match "$string" '\($substring\)'
  • expr substr $string $position $length
  • expr match "$string" '\($substring\)'
  • expr "$string" : '\($substring\)'
  • expr match "$string" '.*\($substring\)'
  • expr "$string" : '.*\($substring\)'
  • expr match "$string" '.*\($substring\)'
  • expr "$string" : '.*\($substring\)'

子串削除

  • ${string#substring} 从$string的开头位置截掉最短匹配的$substring
  • ${string##substring} 从$string的开头位置截掉最长匹配的$substring
  • ${string%substring} 从$string的结尾位置截掉最短匹配的$substring
  • ${string%%substring} 从$string的结尾位置截掉最长匹配的$substring

子串替换

  • ${string/substring/replacement} 使用$replacement来替换第一个匹配的$substring
  • ${string//substring/replacement} 使用$replacement来替换所有匹配的$substring
  • ${string/#substring/replacement} 如果$substring匹配$string的开头部分, 那么就用$replacement来替换$substring
  • ${string/%substring/replacement} 如果$substring匹配$string的结尾部分, 那么就用$replacement来替换$substring
  • ${!varprefix*}, ${!varprefix@} 匹配所有之前声明过的, 并且以varprefix开头的变量

xyz23=whatever

xyz24=

a=${!xyz*} # 展开所有以"xyz"开头的, 并且之前声明过的变量名.

通过变量间接引用

eval var1=\$var2

var1=var2

var2=3

eval var3=\$var1

echo $var3 # 3

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章