shell的运算&脚本实验

1.运算符号

   + ##加法
    - ##减法
    *##乘法
    / ##除法
    % ##除法后的余数
    ** ##乘方
    ++ ##自加一##自减一
    < ##小于
    <= ##小于等与
    "> 大于
    .>= 大于等与
    = ##等于
    j+=i   ##j=j+i
    = ##j=ji
    /=   ##j=j/i
    %= ##j=j%i

2.运算指令

(())
let
expr
bc
bc << EOF
1+2
EOF

eg:
echo $[1+2]

脚本实验
#10s倒计时脚本:

#!/bin/bash
for  ((j=10;j>0;j--))
do
echo -n "after ${j}s is end "
echo -ne "\r"
sleep 1
done

#1分10秒倒计时

#!/bin/bash
for  ((j=70;j>0;j--))
do
min=$[$j/60]
sec=$[$j%60]
echo -n "after "$min:$sec"s is end "
echo -ne "\r"
sleep 1
done

#创建用户 和 密码
在这里插入图片描述

if [ "$#" -ne "2" ]
then echo "Error:plz input 2 files"
     exit
elif [ ! -e "$1" ]
then echo "Error:$1 does not exist"
     exit
elif [ ! -e "$2" ]
then echo "Error:$2 does not exist"
     exit
elif
  LINE1=`sed -n '$=' $1`
  LINE2=`sed -n '$=' $2`
  [ "$LINE1" -ne "$LINE2" ]
then echo "Error:plz match the same lines between the two files"
     exit
fi
for Line in `seq 1 $LINE1`
do
        USERNAME=`sed -n ${Line}p $1`
        PASSWORD=`sed -n ${Line}p $2`
        useradd $USERNAME &> /dev/null && {
        echo $PASSWORD | passwd --stdin $USERNAME &> /dev/null
        echo $USERNAME is created
}||{
        echo $USERNAME exists
}
done

####系统性能检测脚本
在这里插入图片描述

#!/bin/bash
echo mem:`ps ax -o %mem | awk 'BEGIN{N=0}!/%MEM|0.0/{N+=$1}END{print N}'`%
echo cpu:`ps ax -o %cpu | awk 'BEGIN{N=0}!/%CPU|0.0/{N+=$1}END{print N}'`%

###数据库备份
在这里插入图片描述

[ -z "$1" ] && {
        echo "plz input password"
        exit
}
rpm -q mariadb-server &> /dev/null
[ "$?" != "0" ] && {
        echo "not installed"
        exit
}
[ ! -e "/var/lib/mysql/mysql.sock" ] &&{
        echo "not running"
        exit
}

DATABASE=`mysql -uroot -p$1 -e "SHOW DATABASES;" | grep -E "base$|schema$" -v`
if [ "$?" != "0" ]
then
    echo "wrong passwd"
else
    mkdir -p /mnt/mysqldump
    for DATABASENAME in $DATABASE
    do
    [ ! -e "/mnt/mysqldump/${DATABASENAME}.sql" ] &&{
        mysqldump -uroot -p$1 $DATABASENAME > /mnt/mysqldump/${DATABASENAME}.sql
        echo "${DATABASENAME}.sql is been back up"
    }||{
        echo -e "/mnt/mysqldump/${DATABASENAME}.sql exists"
        while true      
        do
                read -p "PLZ INPUT S[KIP] B[ACK UP] O[VERWRITE]:" ACTION
                case $ACTION in
                S)
                break;;
                B)
                mysqldump -uroot -p$1 $DATABASENAME > /mnt/mysqldump/${DATABASENAME}_backup.sql
                echo "${DATABASENAME}_backup.sql is been back up"
                break
                ;;
                O)
                mysqldump -uroot -p$1 $DATABASENAME > /mnt/mysqldump/${DATABASENAME}.sql
                echo "${DATABASENAME}.sql is overwrited."
                break
                ;;
                E)
                break
                ;;
                *)
                echo UNKNOWN WORD
                ;;
                esac
        done
       }
    done

fi                                                                                                                

#swap
在这里插入图片描述

#!/bin/bash
/usr/vin/expect <<EOF
spawn fdisk /dev/vdb
expect {
  "Command" { send "n\r";exp_continue }
  "default p" { send "\r";exp_continue }
  "Partition number" { send "\r";exp_continue }
  "First sector" { send "\r";exp_continue }
  "Last sector" { send "\r";exp_continue }
}
expect {
  "Do you want to remove signature" { send "yes\r";exp_continue }
  "help" { send "wq\r"}
}
expect eof
EOF

PNUM=`grep vdb /proc/partitions | awk -F "vdb" 'END{print $2}'`
/usr/bin/expect <<EOF
spawn fdisk /dev/vdb
expect {
   "Command" { send "n\r";exp_continue }
   "Partition number" { send "$PNUM\r";exp_continue }
   "Hex code" { send "82\r" }
}
expect "Command"
send "wq\r"
expect eof
EOF

mkswap /dev/vdb${PNUM}
echo /dev/vdb${PNUM} swap swap defaults 0 0 >> /etc/fstab
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lll_cf

喜欢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值