shell运算符

本文详细介绍了Shell中的各种运算符,包括算术运算符、逻辑运算符、比较运算符以及赋值运算符,并提供了实际操作示例。通过示例展示了如何使用expr、bc等工具进行数学计算。最后,文章提出用Shell实现一个简单的计算器,要求脚本接收两个数字参数,计算它们的和、差、积和商。
摘要由CSDN通过智能技术生成

shell运算符

基础符号

+:加

-:减

*:乘

/:除

%:取余

++:自增

–:自减

**:幂运算

取余数用法

 echo $((RANDOM%20))

自增用法

for((i=1;i<=10;i++));do
  echo zls
done

逻辑符号

# 基础逻辑符号
&&:且,前面的命令执行成功后,再执行后面的命令,前面的不成功,则后面的也不执行
||:或,前面的命令执行不成功,才能执行后面的命令,前面的成功,则后面的不执行
!:非,取反
符号作用
+、-加号,减号,一般用于整型、浮点型等类型的运算,其他语言中也可以做字符串的拼 接
*、/、%乘号、除号、取余,一般用于运算
**幂运算
++、–自增、自减,可前置也可后置,默认步长为1
&&、||、!与、或、非
<、<=、>= 、>小于、小于等于、大于等于、大于
==、!=、=等于,可用于数字和字符串、不等于、赋值
<<、>>向左位移、向右位移
~、|、&、^取反、按位或、按位与、按位异或
+=、-=、*=、/=、 %=赋值运算:a+=1 即 a=a+1 … 依次类推

运算方式

方法一:(())

[root@m01 scripts]# for((i=1;i<=10;i++));do echo zls;done
[root@m01 scripts]# echo $((1+1))
2

[root@m01 scripts]# echo $((2.5+0.5))
[root@m01 scripts]# echo $((1/3))
0

## 注意:不能运算浮点型

方法二:let

[root@m01 scripts]# let a=1+1
[root@m01 scripts]# echo $a
2

[root@m01 scripts]# a=3
[root@m01 scripts]# b=4
[root@m01 scripts]# let c=$a+$b
[root@m01 scripts]# echo $c
7

## 注意:不能运算浮点型

方法三: expr

[root@m01 scripts]# expr 2+2
2+2
[root@m01 scripts]# expr 2 + 2
4

[root@m01 scripts]# expr 1 + 1
2
[root@m01 scripts]# expr 1 + 2
3
[root@m01 scripts]# expr 1 \* 2
2
[root@m01 scripts]# expr 4 \* 2
8

#!/bin/bash

# File Name: __expr.sh__
# Version: __v1.1__
# Author: __DriverZeng__
# Mail: __133411023@qq.com__
# Blog: __https://blog.driverzeng.com__
# DateTime: __2021-09-07 12:24__

number=$1
expr $1 + 1 &>/dev/null
[ $? -eq 0 ] && echo '成功' || echo '请输入数字'

## 注意:不能运算浮点型

方法四:bc

[root@m01 scripts]# yum install -y bc

[root@m01 scripts]# echo 1 + 1 |bc
2

[root@m01 scripts]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
1+1
2
2*4
8
2**10
(standard_in) 6: syntax error
2^10
1024
26%5
1
[root@m01 scripts]# echo 2*5|bc
10

## 支持浮点型计算
## 进制转换
[root@m01 scripts]# echo 'obase=2;10'
obase=2;10
[root@m01 scripts]# echo 'obase=2;10'|bc
1010
[root@m01 scripts]# echo 'obase=2;996'|bc
1111100100
[root@m01 scripts]# echo 'obase=16;996'|bc
3E4
[root@m01 scripts]# echo 'obase=16;16'|bc
10
[root@m01 scripts]# echo 'obase=16;9'|bc
9
[root@m01 scripts]# echo 'obase=16;11'|bc
B
[root@m01 scripts]# echo 'obase=16;10'|bc
A
[root@m01 scripts]# echo 'obase=16;13'|bc
D
[root@m01 scripts]# echo 'obase=16;14'|bc
E

方法五:$[忘记它] 效果用方法一

方法6:awk

[root@m01 scripts]# awk 'BEGIN{print 1+2}'
3
[root@m01 scripts]# awk 'BEGIN{print 1+2 3+4}'
37
[root@m01 scripts]# awk 'BEGIN{print 1+2,3+4}'
3 7
[root@m01 scripts]# awk 'BEGIN{print 1+2,3+4,2.5*4}'
3 7 10
[root@m01 scripts]# awk 'BEGIN{print 1+2,3+4,2.5*4,1/3}'
3 7 10 0.333333

作业:计算器

既然我们已经学习了那么多的计算方法,接下来我们就用shell实现一个计算器吧。

需求:

1.脚本只能传递两个参数

2.只能传递数字

3.分别计算出,这两个数字的 和、差、商、积

4.打印出来结果

#第一步:使用read进行交互
read -p "请输入第一个数字: " x
read -p "请输入第二个数字:" y

#第二步:进行第一次判断,判断输入的值是否为空
# -n 判断 是否为非空
# -a 多重条件判断 与

if [ -n "$x" -a -n "$y" ]
 then

#第三步:进行第二次判断,判断输入的值是否全是数字

##先定义test1和test2,这里我将x和y中所有数字都替换成空
 test1=`echo "$x"|sed "s#^[0-9].*##g"`
 test2=`echo "$y"|sed "s#^[0-9].*##g"`

## 第四步:进行第四次判断,如果test1和test2两个数字是否是数字,就可以判断x和y是否是数字
## -z表示如果后面的值为空,则执行后续的条件
 if [ -z "$test1" -a -z "$test2" ]
  then
 
 echo '两个数字的和: '
 awk "BEGIN{print ${x}+${y}}"
 echo '两个数字的差: '
 awk "BEGIN{print ${x}-${y}}"
 echo '两个数字的积: '
 awk "BEGIN{print ${x}*${y}}"
 echo '两个数字的商: '
 awk "BEGIN{print ${x}/${y}}"
 
 else
  echo "您输入的不是数字,重新执行脚本"
  bash jisuanji.sh
 fi
else
 echo "您没有数字输入,请重新执行脚本"
 bash jisuanji.sh
fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值