linux今日shell代码

今天台湾地震了,日本台风又到,先来看下我今天给大家分享的良许哥的代码解读

首先不多说代码注释先给它噶好,几个必须的代码逻辑还是要的

先来今天题目#输入数字每三位,隔开

#!/bin/bash
#键入数字
read -p "please input a number" nu
#获取数字长度位数
n=`echo $nu |wc -L`
#把数字按照位数一个个空格隔开123 》》》1 2 3 
for d in `echo $nu|sed 's/./& /g'`
do
#获取位数是否能被三整除
    n2=$[$n%3]
#如果整除是三倍数
    if [ "$n2" -eq 0 ]
    then
#用逗号隔开否则输出	
        echo -n ",$d"
    else
        echo -n "$d"
    fi
#下标右边移动位数从左往右	
    let n-=1
#隐藏开头最开始的逗号消失如,123123>>>123123	
done | sed 's/^,//g'

解读这段代码你必须了解按位循环,这边按位循环for d in `echo $nu|sed 's/./& /g'`

do  done

其次注意输出的时候判断完,首位会有逗号必须应用 | sed 's/^,//g'

第二题#输入两次数字,生成两数字之间序列

#!/bin/bash
#键入数字
read -p "please input a number:" n
#如果不是数字就提示非数字
if ! echo "$n" |grep "^[[:digit:]]*$"
then 
    echo "please input a number"
fi	
#循环1到数字次数打印出来   
for i in `seq 1 $n`
do
  echo "$i"
done
#键入是否要继续y/n
read -p "if continue? y/n" c
#走case条件判断是否继续
case $c in
     n|N)
            exit
            ;;
     y|Y)
#是继续键入新数字	 
            read -p  "please  input a number:" n2
#过滤数字保留非数字			
            n3=`echo "$n2" | sed 's/[0-9]//g'`
#判断非数字部分是否有长度			
            if [ -n "$n3" ]
            then
                echo "please input a number"
                exit
            fi
#判断后键入的数字要大于前面数字			
            if [ "$n2" -le "$n" ]
            then
                echo "$n2 should granter than $n"
                exit
            fi
#输出从第一次键入的数字到第二次键入的数字之间的所有序列			
            for j in `seq $[$n+1] "$n2"`
            do
            echo "$j"
            done
            ;;
       *)
            echo "error not a choice" 
            ;;
esac 

这题唯一可以看的重点是这个写法if ! echo "$n" |grep "^[[:digit:]]*$"

是否是数字的判断 ,其次是for和序列函数的用法seq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饭九钦vlog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值