shell字符串长度怎么获取?截取方法详解
shell截取字符串的方法
shell字符串的截取的问题:
一、Linux shell 截取字符变量的前8位,有方法如下:
“$a” 1 8
$a|awk ‘{print (,1,8)}’
$a|cut -c1-8
$a : ‘\(.\\).*’
$a|dd bs=1 count=8 2>/dev/null
二、按指定的字符串截取
1、第一种方法:
${##*} 从左向右截取最后一个后的字符串
${#*}从左向右截取第一个后的字符串
${%%*}从右向左截取最后一个后的字符串
${%*}从右向左截取第一个后的字符串
“*”只是一个通配符可以不要
例子:
$ MYVAR=
$ echo ${MYVAR##*fo}
$ echo ${MYVAR#*fo}
2、第二种方法:${:n1:n2}:截取变量从n1到n2之间的字符串。
可以根据特定字符偏移和长度,使用另一种形式的变量扩展,来选择特定子字符串。试着在 bash 中输入以下行:
$ =
$ echo ${:0:3}
cow
$ echo ${:3:7}
这种形式的字符串截断非常简便,只需用冒号分开来指定起始字符和子字符串长度。
三、按照指定要求分割:
比如获取后缀名
ls -al | cut -d “.”-f2
一、构造字符串
直接构造
=hello
="i am a "
='ess'
重复多次
# the first parm($1) by $2 times
()
local x=$2
if ; then
x=0
fi
local =""
while ;
do
=` "%s%s" "$" "$1"`
x=`expr $x - 1`
done
echo $
举例:
=` "$" 3`
echo " = $"
二、赋值与拷贝
直接赋值
与构造字符串一样
=terry
从变量赋值
=$
三、联接
直接联接两个字符串
=` "%s%s" "$" "$"`

使用可以进行更复杂的联接
四、求长
求字符数(char)
=`echo "$" | wc -m`
echo $
求字节数(byte)
=`echo "$" | wc -c`
echo $
求字数(word)
=`echo "$" | wc -w`
echo $
五、比较
相等比较
str1 = str2
不等比较
str1 != str2
举例:
if
"$" = "terry"
; then
echo "I am terry"
fi
小于比较
# 0 if the two is equal, 1 if $1 < $2, else pare() { local x=0 if
"$1" != "$2"
; then x=2 =` "%s\n%s" "$1" "$2"` local TEMP2=`(echo "$1"; echo "$2") |sort` if
"$TEMP" = "$TEMP2"
; then x=1 fi fi echo $x }
六、测试
判空
-z str
判非空
-n str
是否为数字
# 0 if the is nu























