目录
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

- 调用
hostnamectl命令设置主机名为node<ID>.su.org。 - 将IP地址设置为
192.168.81.<ID>。 - 将
node<ID>.su.org和192.168.81.<ID>写入/etc/hosts文件中。 - 统计当前主机上有多少个网络设备,如果大于1,则提示用户选择要配置的设备。
- 如果用户要为某个设备配置IP,则提示用户输入该设备的IP地址,并将其写入到对应的网络配置文件中。
- 最后,使用
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


![SHCTF2023 山河CTF Reverse方向[Week1]全WP 详解](https://img-blog.csdnimg.cn/2d40c31e10b54238b566420c750bb564.png)

















