要想得到 $STR shell 变量的长度,请输入:
LENGTH=`expr $STR : ".*"`
这会将 LENGTH 变量设置成由 :(冒号)运算符给出的值。.*(点,星号)模式会对任何字符串从头到尾去匹配,因此冒号运算符给出$STR 变量的长度作为匹配字符的数目。注,.* 必须在引号内,来防止 shell 将 *(星号)处理成模式匹配字符。引号不是模式中的一部分。
如果 $STR 变量设置成空字符串或者包含了任何空格(空白或者制表键)的话,那么该命令会显示错误消息expr: syntax error。这是因为 shell 通常不会将空字符串传递给命令。在这种情况下,expr 命令只能看见:
:.*
shell 还会除去单个的引号。不起作用的原因是因为冒号运算符要求有两个值。此问题可以通过将 shell 变量以双引号括起来解决:
LENGTH=`expr "$STR" : ".*"`
现在,如果 $STR 变量的值为空的话,LENGTH 变量被设置成 0 值。通常我们推荐将 shell 变量用双引号括起来。不要将 shell 变量用单引号标记括起来。
你所缺少的部分,也早已被我用想像的画笔填满。