shell的算数运算

一.(( ))

注意事项:

1.括号里边使用变量时,变量名前边的$可以省略,但是每次书写时最好将$加上,防止出现错误

2.运算符的前后空格可以省略

3.括号里边的运算符可以代替c语言的任何算数运算,同时还能使用更复杂的一些运算

4.一些标点符号需要转义才能使用,需要格外注意,如

\(\) ----> 这是小括号的用法
\<   ----> 这是小于的用法
\>   ----> 这是大于的用法

格式一般如下:

((表达式1,表达式2,表达式3.....))
最后一个表达式的结果就是整个表达式的结果

例如求1-100的和
#!/bin/bash  #这种就是调用bash解析器
#1-100求和

sum=0
for i in `seq 1 100`  #这里用到了命令置换符和for循环语句
do
	((sum += i))  #sum存储了前边1到99的和然后进入循环执行最后一次就是sum=sum+100
done
echo "sum = $sum"   #输出1-100的和
seq这个函数 是打印一个数字序列  
# seq 1 2 100 这里的意思是每次打印间隔为2,打印范围是1-100 如1 3 5....
通过打印这个序列将1-100赋值给i这个变量然后循环执行sum=sum+i执行一百次

二.$[]

1.格式

ret=$[表达式1,表达式2,表达式3.....]
这种类似于c语言中学的逗号运算符ret=(表达式1,表达式2,表达式3)

eg: 
ret=$[1+2,3+4,5+6]
echo "ret = $ret"  #这时ret等于11
使用$[]时需注意必须要有一个变量去接否则会报错

三.let

格式:

let sum=var1运算符var2
注意:
1.let必须放到整个语句的最前边(重点)
2.运算符两边不允许有空格,等号两边也不能有空格(重点)
3.变量前边的$最好加上,不加也不会报错

eg:
let sum=(1+2)*3
echo "sum = $sum"

四.expr

格式:

expr 表达式
注意:
1.使用变量时,必须要加$(重点)
2.运算符的前后必须加空格
 eg: expr $value1 + $value2
3.expr不能进行自增自减运算
eg:expr $value++  #这种是错误的
eg:expr $value + 1 #这种是可以的
4.expr使用部分运算符时必须要用\转义
5.expr使用变量时必须使用双引号将变量括起来
6.将expr的结果赋值给一个变量需要用到命令置换符
eg:ret=`expr "$value1" + "$value2"`

处理字符串经常会使用到expr

1.expr match STRING REGEXP  
    #从STRING字符串中第一个字符开始匹配REGEXP字符串,匹配成功返回匹配的字符个数,失败返回0
    eg: str=www.baidu.com
        expr match $str "www.baidu"
        9  #结果
2.expr substr STRING POS LENGTH
    #从STRING字符串中第POS位置开始截取长度为LENGTH的字符串,将截取的字符串返回(注意:字符串的第一个字符是1不是0)
     eg: str=www.baidu.com
        expr substr $str 1 3
       www  #结果
3.expr index STRING CHARS
    #查找CHARS字符在STRING串中出现的位置,返回值是字符串的下边(注意:字符串的第一个字符是1不是0)
如果出现相同的字符,匹配到第一个就会结束查找
    eg: str=www.baidu.com
        expr index $str .
       4 #结果
4.expr length STRING
    #计算字符串的长度
    eg: str=www.baidu.com
        expr length $str 
       13 #结果

五.if语句的使用

格式:

1.if [ 表达式 ]  #注意[]里边表达式前后需要有空格,shell中if语句不能使用花括号括住需要执行的语句
  then
      shell语句
  fi

eg:if [ a > b ]
    then
        echo "a"
    fi
2.if [ 表达式 ]  
  then
      shell语句
  elif [ 表达式 ]  
  then
      shell语句
  else 
      shell语句
  fi     #结束时需要将if反着写表示if语句写完了

在使用时一定要注意[ ]里边全部加空格,另外[ ]的本质就是一个test的命令

如果表达式需要用到 && 或者 ||时,必须分成两个[ ]来写

eg:if [ -z "str1" ] || [ -z "str2" ]
这里是判断两个字符串是否为空

六.case in语句

格式

case $value in
    表达式1)
        shell语句
        ;;
     表达式2)
        shell语句
        ;;
    .....
     *)    #这里的*表示其他情况类似于default
        shell语句
        ;;   #这里类似于break
#!/bin/bash 

read -p "请依次输入数字符号数字 > " num1 symbol num2
value=$(($num1 $symbol $num2))
case $symbol in
	'+')
		echo "add=$value"
		;;  # 在shell中case分支中的;;不能省略,除了最后一个
	'-')
		echo "sub=$value"
		;;
	'*') 
		echo "mul=$value"
		;;   # 最后一个分支的;;可以省略
esac

七.while语句

格式

while [ 表达式1]
do
    循环体
done

八.for循环语句

格式

1.for ((表达式1;表达式2;表达式3))
    do
        循环体
    done
eg:
    for ((i=0;i<=100;i++))
do
    ((sum=sum+i))
done    #1-100求和
2.for var in 单词列表
    do
        循环体
    done
eg:
    for i in `seq 1 100`
do
    ((sum=sum+i))
done    #1-100求和

九.select in语句

格式

    select var in 选项列表
    do
        语句
    done
eg:
    select var in windows MAC Android 
    do
       echo "$var"
    done     #输出选项前的编号就会将选项打印出来和case in一般连用

十.break和continue关键字

1.break 主要是退出本层循环的
后边跟着一个数字表示退出几层循环
eg: break 2   表示退出两层循环
2.comtinue 主要是用来退出的本层的本次循环
后边跟着一个数字表示退出本层的几次循环
eg: continue 2   表示退出本层的两次循环

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值