每天实践bash

写一个 bash脚本以输出一个文本文件 nowcoder.txt中的行数

#!bin/bash
line=0
while read p
do
    ((line++))
done < ./nowcoder.txt
echo $line
  • 变量赋值等于号左右无空格;
  • while read line do done < file 重定向,把file文件循环每一行赋值给line循环中可以对line进行操作;(read通过输入重定向,把file的第一行所有的内容赋值给变量line,循环体内的命令一般包含对变量line的处理;然后循环处理file的第二行、第三行。。。一直到file的最后一行。
    还记得while根据其后的命令退出状态来判断是否执行循环体吗?
    是的,read命令也有退出状态,当它从文件file中读到内容时,退出状态为0,循环继续进行;
    当read从文件中读完最后一行后,下次便没有内容可读了,此时read的退出状态为非0,所以循环才会退出。
  • 双小括号。参考 整数扩展。这种扩展计算是整数型的计算,不支持浮点型。((exp))结构扩展并计算一个算术表达式的值,如果表达式的结果为0,那么返回的退出状态码为0,或者 是"假",而一个非零值的表达式所返回的退出状态码将为1,或者是"true"。若是逻辑判断,表达式exp为真则为1,假则为0。
  • echo想输出变量值必须加$,否则输出字符串;

================================2022.03.26

经常查看日志的时候,会从文件的末尾往前查看,于是请你写一个 bash脚本以输出一个文本文件 nowcoder.txt中的最后5行

先计算所有行数,再递减把倒数5行输出

#!bin/bash
row=0
while read line
do
    ((row++))
done < ./nowcoder.txt
while read line
do
    if [ $row -lt 6 -a $row -gt 0 ]
    then
        echo $line
    fi
    ((row--))
done < ./nowcoder.txt

if后有then;
中括号用法:中括号里[]左右必须有空格;

==========================================2022.03.27

写一个 bash脚本以输出数字 0 到 500 中 7 的倍数(0 7 14 21…)的命令

#!/bin/bash
for i in {0..500..7}
do
    echo $i
done

0…500…7(0到500步长7);for循环do … done;

=================================2022.03.28

写一个 bash脚本以输出一个文本文件 nowcoder.txt 中第5行的内容。

#!bin/bash
line=1
while read p
do
    if [ $line -eq 5 ]
    then 
        echo $p
    fi
    ((line++))
done < ./nowcoder.txt

[ 左右必须有空格

=====================================2022.03.29

写一个 bash脚本以输出一个文本文件 nowcoder.txt中空行的行号,可能连续,从1开始

#!bin/bash
row=1
while read line
do
    if [ "$line" = "" ]
    then
        echo $row
    fi
done < ./nowcoder.txt

判断字符串为空特可以

if [ -z "$line" ] 

=================================2022.04.03

描述 写一个 bash脚本以统计一个文本文件 nowcoder.txt中每一行出现的1,2,3,4,5数字个数并且要计算一下整个文档中一共出现了几个1,2,3,4,5数字数字总数。

#!bin/bash
row=0
sum=0
while read line
do
    num=0
    len=${#line}
    for((i=0;i<len;i++))
    do
        if [[ ${line:i:1} =~ [1-5] ]]
        then
            ((num++))
        fi
    done
    ((row++))
    ((sum+=num))
    echo "line$row number:$num"
done < ./nowcoder.txt
echo "sum is $sum"

索引字符串中字符:${str:i:1} 1表示从i下标截取的字符长度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值