设为首页 加入收藏

TOP

Shell脚本练习(五)
2023-07-23 13:39:42 】 浏览:152
Tags:Shell
else echo "$i:非闰年" fi done

案例13:计算等差数列之和

[root@master shell]# cat sum.sh
#!/bin/bash
#功能描述(Description):计算等差数列之和1+2+3+,...,+100

sum=0;i=1
while [ $i -le 100 ]
do
    let sum+=$i
    let i++
done
echo -e "1+2+3+,...,+100的总和为:\033[1;32m$sum\033[0m"

案例14:判断用户输入

[root@master shell]# cat case1.sh
#!/bin/bash
read -p "请输入redhat|fedora:" key
case $key in
redhat)
    echo "fedora.";;
fedora)
    echo "redhat.";;
*)
    echo "必须输入redhat或fedora."
esac


[root@master shell]# cat case2.sh
#!/bin/bash
read -p  "Are you sure?[y/n]:"  sure
case  $sure  in
y|Y|yes|YES)
   echo "you enter $sure,OK";;
n|N|NO|no)
   echo "you enter $sure,OVER";;
*)
   echo "error";;
esac

案例15:倒计时脚本

[root@kube-node1 ~]# cat clock倒计时.sh
#!/bin/bash
#功能描述(Description):通过tput定位光标,在屏幕特定位置打印当前的计算机时间.

#使用Ctrl+C中断脚本时显示光标.
trap 'tput cnorm;exit' INT EXIT

#定义数组变量,该数字有9个元素,每行是1个元素,每一个数字占用12列.
#0的数组坐标位置为0-11,1的数组坐标位置为12-23,依此类推.
number=(
'  0000000000      111     2222222222  3333333333 44    44     5555555555  6666666666   777777777   888888888  9999999999 '
'  00      00    11111             22          33 44    44     55          66           77     77   88     88  99      99 '
'  00      00   111111             22          33 44    44     55          66           77     77   88     88  99      99 '
'  00      00       11             22          33 44    44     55          66                  77   88     88  99      99 '
'  00      00       11     2222222222  3333333333 44444444444  5555555555  6666666666          77   888888888  9999999999 '
'  00      00       11     22                  33       44             55  66      66          77   88     88          99 '
'  00      00       11     22                  33       44             55  66      66          77   88     88          99 '
'  00      00       11     22                  33       44             55  66      66          77   88     88          99 '
'  0000000000  1111111111  2222222222  3333333333       44      555555555  6666666666          77   888888888  9999999999 '
)

#获取计算机时间,并分别提取个位和十位数字.
get_time(){
   if [ -z "$1" ];then
       echo "Usage:$0 倒计时分钟"
       exit
   fi
   sec=$[$1*60]
}

#将数组中的某个数组打印出来.
print_time(){
    #从第几个位置开始提取数组元素,0就从0开始,1就从12开始,2就从24开始,依此类推.
    begin=$[$1*12]
    for i in `seq 0 ${#number[@]}`   #0-9的循环.
    do
        tput cup $[i+5] $2
        echo -en "\033[91m${number[i]:$begin:12}\033[0m"
    done
}

#依次打印小时,分钟,秒(个位和十位分别打印).
get_time $1
while :
do
    [ $sec -lt 0 ] && exit
    tput civis    #隐藏光标.
    tput clear
    tput cup 3 16
    echo  "倒计时:"
    for j in `seq ${#sec}`
    do
        num=`echo $sec | cut -c $j`
        y=$[j*16]
        print_time $num $y
    done
    let sec--
    echo
    sleep 1
done

案例16:贪吃蛇

[root@kube-node1 ~]# cat snake.sh
#!/bin/bash

declare -i x=5
declare -i y=5
declare -i len=4

declare -i x_arr=(1 2 3 4 5)
declare -i y_arr=(5 5 5 5 5)

declare -i res=0

dir='d'
level_arr=(0.3 0.2 0.1 0.01 0.005)

init() {
        clear
        echo -e "\033[0m"
        echo -e "\033[?25l"
        gen_food
}

set_show() {
                # \33[y;xH设置光标位置
        for ((i = 1; i < $len; i++)); do
                        echo -e "\033[47m\033[36m"
                        echo -e "\033[${y_arr[$i]};${x_arr[$i]}H*\033[0m"
        done
                echo -e "\033[42m\033[37"
                echo -e "\033[${y_arr[$i]};${x_arr[$i]}H+\033[0m"

                echo -e "\033[${randomy};${randomx}H$\033[0m"

                for ((i = 0; i <= 60; i++)); do
                        echo -e "\033[27;${i}H#\033[0m"
                        echo -e "\033[0;${i}H#\033[0m"
                done

                for ((i = 0; i <= 27; i++)); do
                        echo -e "\033[${i};0H#\033[0m"
                        echo -e "\033[${i};60H#\033[0m"
                done

                echo -e "\033[16;65Hsnake:${x},${y}\033[0m"
                echo -e "\033[17;65Hfood :${randomx},${randomy}\033[0m"
                echo -e "\033[28;0H\033[43mscore:${res}\033[0m"
}

move() {
        case $dir in
                        "w") y=$y-1 ;;
                        "s") y=$y+1 ;;
                        "a") x=$x-1 ;;
                        *
首页 上一页 2 3 4 5 6 7 8 下一页 尾页 5/9/9
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MIT 6.828 Homework: Xv6 System .. 下一篇用bpftrace窃取Mysql账号密码

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目