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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值