计算字符串长度
${#string}
expr length "$string"
string 有空格,则必须加双引号
str="hello world"
# ${#string}
len=${#string}
echo $len
11
# `expr length "$string"`
len=`expr length "$str"`
echo $len
11
获取字符的索引位置
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`
命令替换
command
$(command)
# 获取系统的所有用户并输出
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