计算字符串长度
${#string}
expr length "$string"
string 有空格,则必须加双引号
str="hello world"
# ${#string}
len=${#string}
echo $len
11
# `expr length "$string"`
len=`expr length "$str"`
echo $len
11
对字符串切片
${var:n:m}
从第n+1个开始,连续取m个
${var:n}
从n+1个开始取,直到结尾;或删除前n个字符
删除某个子串 #
、##
、%
、%%
删除匹配字符串
#
和##
是从左开始删除匹配, 其中#
是最小匹配,##
是最大匹配
${var#x*a}
从左边删除,以x开始a结尾的最小删除
- %和%%是从右开始删除匹配, 其中
%
是最小匹配, %%
最大匹配
${var%x*z}
从右边删除,以x开始,以z结尾的最小删除
字符串替换
${var/src/dst}
把var中src的子串替换为dst,自动替换第一个匹配的结果
${var//src/dst}
把var中src的子串全部替换为dst
${var/#src/dst}
把var中从头开始匹配src的子串,替换为dst
${var/%src/dst}
把var中从尾部开始匹配src的子串,替换为dst
字符串未定义,给予默认值
${var-xyz}
如果var变量未定义,才会赋予默认值xyz,否则输出对应的变量值
${var:-xyz}
如果var只要为空,使用默认值xyz
${var+xyz}
只有变量var赋值后,默认值生效。如果var定义为空,也会生效
${var:+xyz}
如果变了var为空,不使用默认值xyz
${var?xyz}
问号后面跟错误信息,如果var变量为定义,则报错,并提示后面定义的错误信息
${var:?xyz}
如果var未定义或定义为空,则报错,并提示定义的错误信息
获取字符的索引位置
expr index "$string" $substring
会将substring拆分成一个个字符,返回最先匹配的字符位置
var1="quickstart is app"
ind=`expr index "$var" start`
echo ${ind}
计算子串长度
expr match $string substr
子串必须从头开始匹配,否则是匹配不到的
var="quichstart is a app"
substr="app"
sublen=`expr match "$var" $substr`
echo $sublen
抽取子串
${string:position}
从string的position开始
${string:position:length}
从position开始,匹配长度为length
${string: -position}
从右边开始匹配,冒号:
和-
中间有空格
${string:(position)}
从左边开始匹配
expr substr "$string" $position $length
从position开始,匹配商都为length
var1="quickstart is a app"
sub=${var1:1}
sub=${var1:1:2}
sub=${var1: -1}
sub=${var1:(-1)}
sub=`expr substr "$var1" 1 2`
命令替换-获取命令执行结果
# 获取系统的所有用户并输出
index=1
for user in `cat /etc/passwd | cut -d ":" -f 1`
do
echo "This is $index user: $user"
index=$(($index + 1))
done
# 根据系统时间计算今年或明年
echo "This is $(date + %Y) year"
echo "This is $(($(date + %Y) + 1)) year"
变量声明
declare和typeset命令两者等价,declare、typeset命令都是用来定义变量类型的
declare
- -r 将变量设置为只读
- -i 将变量设为整数
- -a 将变量定义为数组
- -f 显示此脚本前定义过的所有函数和内容
- -F 仅显示此脚本前定义过的函数名
- -x 将变量声明为环境变量
typeset
bash数学运算
expr $num1 operator $num2
$(($num1 operator $num2))
进行加减乘除求余运算,对=和!=运算,会抛语法错误,对于逻辑运算,推荐使用expr命令
bash运算bc
- 路径
/usr/bin/bc
- shell中使用方法
echo "scale=4;32.4+32.1" | bc