当前位置: 首页 > news >正文

shell训练营Day19

练习36
用shell实现,把一个文本文档中只有一个数字的行给打印出来。

参考答案


#!/bin/bash
while read line
do
    n=`echo $line |sed 's/[^0-9]//g'|wc -L`
    if [ $n -eq 1 ]
    then
    echo $line
    fi
done < 1.txt

练习37
系统logrotate工具,可以完成日志切割、归档。写一个shell脚本实现类似的归档功能。
 
举例: 假如服务的输出日志是1.log,要求每天归档一个,1.log第二天就变成1.log.1,第三天1.log.2, 第四天 1.log.3  一直到1.log.5。

#!/bin/bash
cd /data/logs
log=1.log
mv_log()
{
    [ -f $1 ] && mv $1 $2
}
[ -f 1.log.5 ] && rm -f 1.log.5
for i in `seq 4 -1 1`
do 
    j=$[$i+1]
    mv_log $log.$i $log.$j
done
mv 1.log 1.log.1

练习38
写一个shell脚本,把192.168.0.0/24网段在线的ip列出来。

#!/bin/bash
for i in `seq 1 254`
do 
    if ping -c 2 -W 2 192.168.0.$i >/dev/null 2>/dev/null
    then
    echo "192.168.0.$i 是通的."
    else
    echo "192.168.0.$i 不通."
    fi
done

练习39
写一个shell脚本,检查指定的shell脚本是否有语法错误,若有错误,首先显示错误信息,然后提示用户输入q或者Q退出脚本,输入其他内容则直接用vim打开该shell脚本。

#!/bin/bash
sh -n $1 2>/tmp/sh.err
if [ $? -ne 0 ]
then
    cat /tmp/sh.err
    read -p "请输入q/Q退出脚本。" c
    if [ -z "$c"]
    then
    vim $1
        exit 0
    fi
    if [ $c == q ] || [ $c == Q ]
    then
    exit 0
    else
    vim $1
    exit 0
    fi
else
    echo "脚本$1没有语法错误."
fi

练习40
输入一串随机数字,然后按千分位输出。
 
比如输入数字串为“123456789”,输出为123,456,789。

#!/bin/bash
n=`echo $1|wc -L`
for d in `echo $1|sed 's/./& /g'`
do
    n2=$[$n%3]
    if [ $n2 -eq 0 ]
    then
    echo -n ",$d"
    else
    echo -n "$d"
    fi
    n=$[$n-1]
done |sed 's/^,//'
echo

转载于:https://blog.51cto.com/12898947/2340032

相关文章:

  • 创建使用口令的角色,并分配给用户
  • 当Json数据中的key为Java关键字时,在定义实体类的时候不能对该字段进行声明,所以需要对字段进行特殊处理...
  • day16:计算文档中数字|检测两个文件的不同|检测网卡流量|批量杀死sh|检测是否开启80和是什么服务...
  • ruby多线程理解
  • 面试系列-高并发之synchronized
  • 解决fastJson无序问题
  • Filling Your Toolbox (a.k.a. Essential Tools List)
  • sed写的命令收集
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • [转载]---Oracle SQL Loader
  • 开源,不代表你的线上产品可以免费试用
  • Docker(三)安装Mysql
  • 线程的两种创建方式
  • H5弹窗后原窗口不会被滑动
  • ZendStudio 常用快捷键大全
  • 11111111
  • 230. Kth Smallest Element in a BST
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • ERLANG 网工修炼笔记 ---- UDP
  • hadoop集群管理系统搭建规划说明
  • HTML中设置input等文本框为不可操作
  • java 多线程基础, 我觉得还是有必要看看的
  • Java编程基础24——递归练习
  • js ES6 求数组的交集,并集,还有差集
  • Linux下的乱码问题
  • MaxCompute访问TableStore(OTS) 数据
  • nodejs:开发并发布一个nodejs包
  • Ruby 2.x 源代码分析:扩展 概述
  • 动态规划入门(以爬楼梯为例)
  • 关于springcloud Gateway中的限流
  • 软件开发学习的5大技巧,你知道吗?
  • 山寨一个 Promise
  • 使用agvtool更改app version/build
  • 首页查询功能的一次实现过程
  • 为视图添加丝滑的水波纹
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (6)STL算法之转换
  • (AngularJS)Angular 控制器之间通信初探
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)计算机毕业设计高校学生选课系统
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (七)Knockout 创建自定义绑定
  • (三)Honghu Cloud云架构一定时调度平台
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十) 初识 Docker file
  • (十三)Flask之特殊装饰器详解
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转)【Hibernate总结系列】使用举例
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default