Shell字符串操作

拼接

Shell中字符串的拼接不同于其他语言,如Java和JavaScript中可以使用“+”进行拼接,PHP中可以使用“.”进行拼接,在Shell中字符串拼接不需要任何运算符,只要将两个字符串直接写在一起即可。在拼接时要注意字符串的三种表示形式对引号、空格、分号处理的不同。

num=123
str="num"
str1=show\ $str:$num\;
str2="show "$str:$num\;
str3="show "$str:$num';'
str4="show $str:$num;"
str5=show\ $str":"$num\;
str6="show ${str}:$num;"

以上str1-str6输出相同:

show num:123;

截取

Shell中截取字符串的方式可分为按位置截取和按字符截取两类。

按位置

1.从左边计算起始位置:

${variable_name: start[ :length]}

 其中variable_name是要截取的字符串变量名,start是其实位置,从0开始计数,length是要截取的长度,如果省略或者从start到末尾的长度小于length,则截取到末尾。

url=https://blog.csdn.net/
echo ${url:8:4}
echo ${url:8:15}
echo ${url:8}

输出为:

blog
blog.csdn.net/
blog.csdn.net/

 2.从右边计算起始位置:

${variable_name: 0-start[ :length]}

与从左边计算起始位置不同的是,start前多了“0-”,且start是从1开始计数,如果传入0则会从左边计算起始位置。不论从左还是从右计算起始位置,截取的方向都是从左向右截取。

url=https://blog.csdn.net/
echo ${url:0-0:5}
echo ${url:0-9:4}
echo ${url:0-9:15}
echo ${url:0-9}

输出为:

https
csdn
csdn.net/
csdn.net/

按字符

1.截取右边字符:

${variable_name#[#]*chars}

其中variable_name是要截取的字符串变量名,chars是指定的字符或字符串,“*”是通配符表示任意长度的字符串。“#”可以是一个也可以是两个,当只有一个“#”时,从遇到的第一个chars开始向右截取,直到字符串末尾,如果有两个“#”,则表示从最后一个chars开始向右截取,直到字符串末尾。截取结果不包含chars。

url=https://blog.csdn.net/
echo ${url#*.}
echo ${url##*.}

输出为:

csdn.net/
net/

2. 截取左边字符:

${variable_name%[%]chars*}

与“#”不同的是“%”截取chars左边的字符,只有一个“%”时,从字符串开始截取到右边起第一次出现的chars为止,有两个“%”时,从字符串开始截取到右边起最后一次出现的chars为止。

url=https://blog.csdn.net/
echo ${url%.*}
echo ${url%%.*}

输出为:

https://blog.csdn
https://blog

 汇总

格式描述
${variable_name:start:length}从variable_name字符串的边第start个位置开始(从0开始计数),向右截取length个字符(最多到末尾)。
${variable_name:start}从variable_name字符串的边第start个位置开始(从0开始计数),直到末尾。
${variable_name:0-start:length}从variable_name字符串的边第start个位置开始(从1开始计数),向右截取length个字符(最多到末尾)。
${variable_name:0-start}从variable_name字符串的边第start个位置开始(从1开始计数),直到末尾。
${variable_name#*chars}从variable_name字符串边起第一次出现的chars开始,截取chars右边所有的字符(不包含char)。
${variable_name##*chars}从variable_name字符串边起最后一次出现的chars开始,截取chars右边所有的字符(不包含chars)。
${variable_name%chars*}从variable_name字符串开始截取到边起第一次出现的chars为止的所有字符(不包含chars)。
${variable_name%%chars*}从variable_name字符串开始截取到边起最后一次出现的chars为止的所有字符(不包含chars)。

长度

Shell中获取字符串长度的方法为:${#variable_name}。variable_name为字符串变量名。与使用变量时不同,获取字符串长度时大括号“{}”不能省略,否则会将$#解析为特殊变量,然后将variable_name作为字符串的值输出。

url=https://blog.csdn.net/
echo ${#url}
echo $#url

 输出结果为:

22
0url
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值