Bash已经支持了令人惊讶的字符串操作的数量。不幸地,这些工具缺乏统一的标准。一些是参数替换的子集,其它受到UNIX的expr命令的功能的影响。这导致不一致的命令语法和冗余的功能,但这些并没有引起混乱。
字符串长度
${#string}
expr length $string
expr "$string" : '.*'
stringZ=abcABC123ABCabc
echo ${#stringZ} # 15
echo `expr length $stringZ` # 15
echo `expr "$stringZ" : '.*'` # 15例子:在一个文本文件的段落之间插入一个空白行
#!/bin/bash
# paragraph-space.sh
# 给单倍行距的文本文件段落之间插入一个空白行.
# Usage: $0 <FILENAME
MINLEN=45 # 可能需要改变这个值.
# Assume lines shorter than $MINLEN characters
#+ terminate a paragraph.
while read line # 提供和输入文件一样多的行...
do
echo "$line" # 输出行本身.
len=${#line}
if [ "$len" -lt "$MINLEN" ]
then echo # 在一个短行结束后打印一个空白行.
fi
done
exit 0匹配字符串开头的子串的长度
expr match "$string" '$substring'
$substring 是一个正则表达式.
expr "$string" : '$substring'
$substring 是一个正则表达式.