计算字符串 变量长度的方法
echo ${#chars} (内部函数效率高)
echo $chars|wc -m
echo $(expr length "$chars")
man bash /word 找一手资料,学习的方法
变量的数值计算
(()) let expr bc $[]
1).(()) 用于执行简单的整数运算,
eg1.((a=1+2**3-4%3)) ** 幂 echo $a 8
b=$((1+2**3-4%3)) echo $b 8
echo $((1+2**3-4%3)) 8
echo $((a+=1)) 9 (前面a是8)
echo &((3>2)) 1
echo $((3>8)) 0
echo $((100*(100+1)/2)) 5050
cat test.sh
#!/bin/sh
a=6 (赋值语句左右不能有空格,有空格时报错)
b=2 (赋值语句左右不能有空格,有空格时报错)
echo "a-b = $(($a-$b))"
echo "a+b = $(($a+$b))"
echo "a*b = $(($a*$b))"
echo "a/b = $(($a/$b))"
echo "a**b = $(($a**$b))"
echo "a%b = $(($a%$b))"
命令行传参
eg1.1:
cat test.sh
echo "a+b = $(($a+$b))"
echo "a*b = $(($a*$b))"
echo "a/b = $(($a/$b))"
echo "a**b = $(($a**$b))"
echo "a%b = $(($a%$b))"
实现一个加、减、乘、除等功能的计算器
cat test.sh (实现整数四则运算)
#!/bin/sh
echo "$(($1$2$3))"
sh test.sh 1+9
Homework:完成一个简单的四则运算计算器功能
2).let命令 ( 效率低于(()) )
格式:let 赋值表达式
i=2
let i=i+8
echo $i
10
i=2
i=i+8
echo $i
i+8
3).expr 一般用于整数值,但也可以用于字符串,用来求表达式变量的值,同时expr也是一个手工命令计算器。
expr 2 + 2
expr 2 - 2
echo ${#chars} (内部函数效率高)
echo $chars|wc -m
echo $(expr length "$chars")
man bash /word 找一手资料,学习的方法
变量的数值计算
(()) let expr bc $[]
1).(()) 用于执行简单的整数运算,
eg1.((a=1+2**3-4%3)) ** 幂 echo $a 8
b=$((1+2**3-4%3)) echo $b 8
echo $((1+2**3-4%3)) 8
echo $((a+=1)) 9 (前面a是8)
echo &((3>2)) 1
echo $((3>8)) 0
echo $((100*(100+1)/2)) 5050
bc计算小数
cat test.sh
#!/bin/sh
a=6 (赋值语句左右不能有空格,有空格时报错)
b=2 (赋值语句左右不能有空格,有空格时报错)
echo "a-b = $(($a-$b))"
echo "a+b = $(($a+$b))"
echo "a*b = $(($a*$b))"
echo "a/b = $(($a/$b))"
echo "a**b = $(($a**$b))"
echo "a%b = $(($a%$b))"
命令行传参
eg1.1:
cat test.sh
#!/bin/sh
b=$2
echo "a+b = $(($a+$b))"
echo "a*b = $(($a*$b))"
echo "a/b = $(($a/$b))"
echo "a**b = $(($a**$b))"
echo "a%b = $(($a%$b))"
实现一个加、减、乘、除等功能的计算器
cat test.sh (实现整数四则运算)
#!/bin/sh
echo "$(($1$2$3))"
sh test.sh 1+9
Homework:完成一个简单的四则运算计算器功能
2).let命令 ( 效率低于(()) )
格式:let 赋值表达式
i=2
let i=i+8
echo $i
10
i=2
i=i+8
echo $i
i+8
3).expr 一般用于整数值,但也可以用于字符串,用来求表达式变量的值,同时expr也是一个手工命令计算器。
expr 2 + 2
expr 2 - 2
expr 2 \* 2 (expr 2 * 2 语法错误需要转义)
注意:1.运算符左右都有空格,多个空格可以
2.使用乘号时,必须使用反斜线屏蔽其特定含义。因为shell可能会无解星号的含义。
expr $[2+3]
expr $[2*3]
expr $[2/3]
expr $[2%3]
expr $[$a+$b]
判断文件或字符串的扩展名小案例:
if expr "$1" : ".*\.pub" : then
#匹配 *.pub格式的文件如果是则为真。
eg:expr "id_dsa.pub" : ".*\.pub"
10
#匹配的话返回前面文件的字符个数,不匹配返回0
expr对整数的判断(连续判断,等待输入)
cat judge_int.sh
#/bin/sh
while true
do
read -p "Pls input:" a
expr $a + 0 >/dev/null 2>&1
[ $? -eq 0 ] && echo int||echo chars
done
expr计算字符串的长度
chars=`seq -s" " 100`