当前位置: 首页 > article >正文

shell中的运算

目录

1.运算符号

2.运算指令

练习


1.运算符号

运算符号意义
+加法
-减法
*乘法
/除法
%除法后的余数
**乘方
++自加一
- -自减一
<小于
<=小于等于
>大于
>=大于等于
=等于
+=j+=i ->j=j+i
*=j*=i->j=j*i
/=j/=i->j=j/i
%=j%=i->j=j%i

2.运算指令

(())   		//((a=1+2))

let 		//let a=1+2        let是一个用于数学计算的Bash shell内置命令,它可以对整数进行加、减、乘、除等操作,并且还可以将计算结果赋值给一个变量

expr	        //expr 1 + 2  -> 3     expr是一个用于数学计算的UNIX命令,它可以对整数进行加、减、乘、除等操作

bc                //计算器

bc << EOF            //后续输入作为bc命令中的内容,并在遇到EOF时结束输入,然后将其用作bc命令的输入
1+2
EOF

$[] 	       //echo $[1+2]

printf '%0.2f' .3 ==== 0.30
printf '%0.3f' .3 ====0.300
printf '%0.4f' .3 ====0.3000

练习

1分10秒的倒计时

SEC=10
MIN=1
SECS=$[$MIN*60+$SEC]
for ((;SECS>0;SECS--))
do
  SHOW_SEC=$[$SECS%60]
  SHOW_MIN=$[$SECS/60]
  if [ "$SHOW_SEC" -lt "10" ]
  then
    echo -ne "After $SHOW_MIN:0$SHOW_SEC is end"
  else
    echo -ne "After $SHOW_MIN:$SHOW_SEC is end"
  fi
  sleep 1
  echo -ne "\r"
done

计算机随机生成一个1-19之间的整数。

玩家输入数字进行猜测,若猜测正确则游戏结束,若猜测错误则根据实际情况提示“猜小了”或者“猜大了”。

玩家可以输入“exit”结束游戏。

lucky_number=$(($RANDOM % 20))
while true
do
  read -p "please input your lucky number(0-19):" GUESS
  if [ "$GUESS" = "exit" ]
  then
    echo "exit"
    exit
  elif [ "$GUESS" -lt "$lucky_number" ]
  then
    echo "too small"
  elif [ "$GUESS" -gt "$lucky_number" ]
  then
    echo "too big"
  elif [ "$GUESS" = "$lucky_number" ]
  then
    echo "Bingo!!!" && exit
  fi
done

编写一个程序实现网络设备流量的实时监控

要求:支持命令行参数传入网络设备的名称。

每秒钟输出该网络设备的流入流出流量,以byte/s为单位

if [ -z "$1" ]
then
        echo please input net device following $0 !!
elif ifconfig $1 &> /dev/null
then
        while true
        do
                RS1=$(awk "/$1/{print \$2}" /proc/net/dev)
                TR1=$(awk "/$1/{print \$10}" /proc/net/dev)
                sleep 1
                RS2=$(awk "/$1/{print \$2}" /proc/net/dev)
                TR2=$(awk "/$1/{print \$10}" /proc/net/dev)
                echo -ne "Receive: $[$RS2-$RS1], Transmit: $[$TR2-TR1]"
                echo -ne "\r"
        done
else
        echo no
fi

  1. 调用hostnamectl命令设置主机名为node<ID>.su.org
  2. 将IP地址设置为192.168.81.<ID>
  3. node<ID>.su.org192.168.81.<ID>写入/etc/hosts文件中。
  4. 统计当前主机上有多少个网络设备,如果大于1,则提示用户选择要配置的设备。
  5. 如果用户要为某个设备配置IP,则提示用户输入该设备的IP地址,并将其写入到对应的网络配置文件中。
  6. 最后,使用nmcli重新加载网络连接并启用指定的网络设备。
if [ -z "1" ]
then
  echo Please input ID following $0 !!
elif echo $1 | grep -E '^[[:digit:]]{1,}$'
then
  echo Please input A number following $0 !!
  hostnamectl set-hostname node$1.su.org
  echo 192.168.81.$1 node$1.su.org >> /etc/hosts
  DEV_COUNT=`nmcli device show | awk 'BEGIN{N=0}/GENERAL.DEVICE/&&!/lo/{N++}END{print N}'`
  [ "$DEV_COUNT" -gt "1" ]&&{
  for DEVICE in `nmcli device show | awk '/GENERAL.DEVICE/&&!/lo/{print $2}'`
  do
    read -p "Do you want set $DEVICE: " STATE
    case $STATE in
      yes|YES|Y|y)
      read -p "Please input ip address: " IP
cat > /etc/sysconfig/network-scripts/ifcfg-$DEVICE <<EOF
DEVICE=$DEVICE
ONBOOT=yes
BOOTPROTO=none
IPADDR=$IP
PREFIX=24
NAME=$DEVICE
DNS1=114.114.114.114
EOF
    ;;
    no|NO|n|N)
    ;;
    *)
    esac
    nmcli connection reload
    nmcli connection up $DEVICE
  done
}||{

cat > /etc/sysconfig/network-scripts/ifcfg-$DEVICE <<EOF
DEVICE=$DEVICE
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.81.$1
PREFIX=24
NAME=$DEVICE
DNS1=114.114.114.114
EOF
  nmcli connection reload
  nmcli connection up $DEVICE
}
fi


http://www.kler.cn/news/108878.html

相关文章:

  • How to install the console system of i-search rpa on Centos 7
  • kubeadm源码解读与实战(2)
  • 主定理(一般式)
  • SOLIDWORKS Simulation2024仿真10大新功能
  • Pytorch代码入门学习之分类任务(一):搭建网络框架
  • [2021]不确定成本下的处理分配
  • 39 深度学习(三):tensorflow.data模块的使用(基础,可跳)
  • [量化投资-学习笔记002]Python+TDengine从零开始搭建量化分析平台-MA均线的多种实现方式
  • 行为型模式-行为型模式
  • Python练习
  • vim使用
  • 十八、字符串(3)
  • 公众号留言功能有必要开吗?如何开通留言?
  • Java程序设计2023-第二次上机练习
  • Web入门笔记
  • wkhtmltoimage/wkhtmltopdf 使用实践
  • windows下基于vscode的ssh服务远程连接ubuntu服务器
  • 【java学习—十】HashSet集合(4)
  • Elasticsearch分词器-中文分词器ik
  • C语言之文件操作
  • Affinity Photo 2.2.1 高端专业Mac PS修图软件
  • 前后端交互系统:在Node.js中运行JavaScript
  • Python基础入门例程16-NP16 发送offer(列表)
  • 论文阅读——GPT3
  • AcWing89. a^b
  • vue数组中的变更方法和替换方法
  • 【PG】PostgreSQL客户端认证pg_hba.conf文件
  • 笔记44:Batch_Normlization 过程详解
  • openpnp - Warning - Unknown firmware
  • IEEE Standard for SystemVerilog—Chapter 25.7 Tasks and functions in interfaces