Linux基本功杂记——[008]——08月16日课堂练习{BASH脚本}

一、构显99乘法表

#!/usr/bin/env bash
test() {
for((i=1;i<10;i++))
do
    for((x=1;x<=$i;x++))
    do
        echo -n "$x x $i = $(($i * $x))    "
    done
    echo -e "\n"
done
}
test | gawk ‘BEGIN{RS=""}{print}‘
[email protected] ~/bash_script/2016-08-16 $ bash 99.sh
1 x 1 = 1
1 x 2 = 2	2 x 2 = 4
1 x 3 = 3	2 x 3 = 6	3 x 3 = 9
1 x 4 = 4	2 x 4 = 8	3 x 4 = 12	4 x 4 = 16
1 x 5 = 5	2 x 5 = 10	3 x 5 = 15	4 x 5 = 20	5 x 5 = 25
1 x 6 = 6	2 x 6 = 12	3 x 6 = 18	4 x 6 = 24	5 x 6 = 30	6 x 6 = 36
1 x 7 = 7	2 x 7 = 14	3 x 7 = 21	4 x 7 = 28	5 x 7 = 35	6 x 7 = 42	7 x 7 = 49
1 x 8 = 8	2 x 8 = 16	3 x 8 = 24	4 x 8 = 32	5 x 8 = 40	6 x 8 = 48	7 x 8 = 56	8 x 8 = 64
1 x 9 = 9	2 x 9 = 18	3 x 9 = 27	4 x 9 = 36	5 x 9 = 45	6 x 9 = 54	7 x 9 = 63	8 x 9 = 72	9 x 9 = 81

二、构显国际象棋8*8棋盘

#!/bin/bash
line_0() {
for i in {0..47}
do
    if [[ $(($(($i / 8))  % 2)) == "0" ]]
    then
        echo -ne "\033[41m \033[00m"
    else
        echo -ne "\033[46m \033[00m"
    fi
done
}
line_1() {
        for i in {0..47}
        do
            if [[ $(($(($i / 8))  % 2)) != "0" ]]
            then
                echo -ne "\033[41m \033[00m"
            else
                echo -ne "\033[46m \033[00m"
            fi
        done
}
chess() {
for x in {0..23}
do
    if [[ $(($(($x / 4)) % 2)) != "0" ]]
    then
        line_0
    else
        line_1
    fi
    echo -e "\n"
done
}
chess | gawk ‘BEGIN{RS=""}{print}‘

International Chess

#!/usr/bin/bash
n=1
test() {
    for x in {1..8}
    do
    if [[ $(($x % 2)) == "0" ]]
    then
        echo -e "\033[41m  \033[00m"
    else
        echo -e "\033[46m  \033[00m"
    fi
    done
}
while [[ $n < 9 ]]
do
    if [[ $(($n % 2)) == "0" ]]
    then
        test > $n.txt
    else
        test | tac > $n.txt
    fi
let n+=1
done
paste {1..8}.txt > result.txt
cat result.txt | sed ‘s/\t//g‘
rm result.txt {1..8}.txt

tac:International Chess

三、取10个随机数中的最大值和最小值

#!/usr/bin/env bash
max=$RANDOM
min=$max
echo $max
for((i=9;i>0;i--))
do
    max_old=$max
    max=$RANDOM
    echo $max
    if [[ $max -lt $max_old ]]
    then
        min_old=$min
        min=$max
        if [[ $min -gt $min_old ]]
        then
            min=$min_old
        fi
        max=$max_old
    fi
done
echo -e "\nLargest: $max; smallest: $min"

[email protected] ~/bash_script/2016-08-16 $ bash max_min.sh
5677
28252
27333
13922
3719
22836
2412
6102
3560
12516

Largest: 28252; smallest: 2412

Max and Min

四、求1-100整数之和

#!/usr/bin/bash
read -p "Please input an +int: " N
sumN=0
for((i=1;i<=$N;i++))
do
    sumN=$(($sumN + $i))
done
echo "$sumN"
时间: 2024-09-30 02:28:12

Linux基本功杂记——[008]——08月16日课堂练习{BASH脚本}的相关文章

Linux基本功杂记——[007]——8月10日课后作业

/*答案不止一个,仅列出自认为最优雅的存在*/ 作业要求:编写BASH脚本实现题目要求的内容. 一.显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小 1 #!/usr/bin/bash 2 printf 3 " Hostname: $(hostname)\n \ 4 IPv4: $(ip addr | grep -oP '(\d+\.){3}\d+/\d+' | awk 'BEGIN{ORS=" "}{print}')\n

Linux基本功杂记——[002]——7月29日课后作业

1.file1文件的内容为:”1 2 3 4 5 6 7 8 9 10” 计算出所有数字的总和 方法一:[[email protected]7 fh]# echo $(tr ' ' '+' <file1) | bc 55 方法二:[[email protected]7 fh]# x=$(($(tr ' ' '+' <file1))) && echo $x 55 方法三:[[email protected]7 fh]# x=$(tr ' ' '+' <file1) | py

Linux基本功杂记——[004]——8月4日课后作业

一.找出ip addr命令结果中本机所有的IPv4地址 BASH: [email protected] ~/py $ ip addr | grep -oP '(?:\d+\.){3}\d+/\d+' 127.0.0.1/8 172.18.16.4/24 Python3: [email protected] ~/py $ cat ipaddr.py #!/usr/bin/python3 #-*- coding='utf-8' -*- import re import subprocess ipb

Linux 第30天: (08月5日) 练习和作业

变量脚本 1.编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小 server_ip=`ifconfig|grep'inet\b'|grep -v '127.0.0.1'|tr-s ' '|cut -d' ' -f3` CPUmod=`lscpu|grep -i "model name:"` Meminfo=`free -h|sed -n '2p'|tr -s ' '|cut -

Linux 第14天: (08月25日) Linux磁盘管理

本章内容磁盘结构分区类型管理分区管理文件系统挂载设备管理虚拟内存 设备文件I/O Ports: I/O设备地址一切皆文件:open(), read(), write(), close()设备类型:块设备:block,存取单位"块",磁盘字符设备:char,存取单位"字符",键盘设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信设备号码:主设备号:major number, 标识设备类型次设备号:minor number, 标识同一类型下的不同设备

Linux 第15天: (08月29日) Linux高级文件系统管理

本章内容设定文件系统配额设定和管理软RAID设备配置逻辑卷设定LVM快照btrfs文件系统 配置配额系统综述在内核中执行以文件系统为单位启用对不同组或者用户的策略不同根据块或者节点进行限制执行软限制(soft limit)硬限制(hard limit)初始化分区挂载选项:usrquota.grpquota初始化数据库:quotacheck 为用户设定配额执行开启或者取消配额:quotaon.quotaoff直接编辑配额:edquota username在shell中直接编辑:setquota u

Linux 第15天: (08月29日) 练习和作业

管理磁盘配额 fdiskpartx -a /dev/sda mount /dev/sda6 /homedfcd /homemv * /home vim /etc/fstab                            启用磁盘配额挂载选项 :r!blkid /dev/sda6  /home  ext4  default  0 0:r!blkid /dev/sda6  /home  ext4  usrquota,grpquota  0 0 mount -o remount /dev/sd

Linux 第十天: (08月15日) 文件查找和压缩

locate  非实时查找(数据库查找) /var/lib/mlocate/mlocate.dblocate -i 执行区分大小写的搜索locate -n N 只列举前N个匹配项目locate foo 搜索名称或路径中带有"foo"的文件locate -r '\.foo$'使用Regex来搜索以".foo"结尾的文件 find -name " 文件名称"支持使用glob *, ?, [], [^]find -iname" 文件名称&qu

Linux 第十天: (08月15日) 练习和作业

查找/var目录下属主为root 且属组为mail的所有文件find  /var/ -user root -group mail 查找/var目录下不属于root lp gdm的所有文件find /var/ -not \(-user root -o -user jane -o -user jane\) 查找/var目录下最近一周修改过内容 且属主不为root 也不是postfix的文件find /var/ -mtime -7 \(-not -user root -a -not group pos