每周五练·shell

  • 问候用户

    写一个脚本,依次向/etc/passwd中的每个用户问好,并且说出对方的ID是什么:

    Hello,root,your UID is 0.

    参考命令:

    awk -F ':' '{print "Hello,"$1",your uid is "$3.}' /etc/passwd
  • 打印正方形

    交互式脚本,根据提示,需要用户输入一个数字作为参数,最终打印出一个正方形。

    在这里我提供一个linux下面的特殊字符■,可以直接打印出来。

    示例: 如果用户输入数字为5,则最终显示的效果为:

    ■ ■ ■ ■ ■
    
    ■ ■ ■ ■ ■
    
    ■ ■ ■ ■ ■
    
    ■ ■ ■ ■ ■
    
    ■ ■ ■ ■ ■

    参考代码:

    #!/bin/bash
    
    read -p "please input a number:" sum
    a=`echo $sum |sed 's/[0-9]//g'`
    if [ -n "$a" ]
    then
        echo "请输入一个纯数字。"
        exit 1
    fi
    
    for n in `seq $sum`
    do
        for m in `seq $sum`
        do
            if [ $m -lt $sum ]
            then
                echo -n "■ "
            else
                echo "■"
            fi
        done
    done

 

  • 【脚本85】判断函数

    请使用条件函数if撰写一个shell函数 函数名为 f_judge,实现以下功能:

               当/home/log 目录存在时 将/home目录下所有tmp开头的文件或目录移/home/log 目录。

               当/home/log目录不存在时,创建该目录,然后退出。

参考代码:

#!/bin/bash

f_judge (){
    if [ -d /home/log ]
    then 
        mv /home/tmp* /home/log/
    else
        mkdir -p /home/log
        exit
    fi
}
  • 处理日志

写一个脚本查找/data/log目录下,最后创建时间是3天前,后缀是*.log的文件,打包后发送至192.168.1.2服务上的/data/log下,并删除原始.log文件,仅保留打包后的文件

参考代码:

#!/bin/bash

find /data/log -name “*.log” -mtime +3 > /tmp/file.list
cd /data/log
tar czvf log.tar.gz `cat /tmp/file.list|xargs`
rsync -a log.tar.gz  192.168.1.2:/data/log  # 这一步需要提前做一个免密码登录
for f in `cat /tmp/file.list`
do
    rm -f $f
done
  • 处理文本

有如下文本,其中前5行内容为

1111111:13443253456
2222222:13211222122
1111111:13643543544
3333333:12341243123
2222222:12123123123

用shell脚本处理后,按下面格式输出:

[1111111]
13443253456
13643543544
[2222222]
13211222122
12123123123
[3333333]
12341243123

参考代码:

#! /bin/bash

sort -n filename |awk -F ':' '{print $1}'|uniq >id.txt

for id in `cat id.txt`; do
        echo "[$id]"
        awk -v id2=$id -F ':' '$1==id2 {print $2}' filename  
        #另外的方式为: awk -F ':' '$1=="'$id'" {print $2}' filename  
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值