Shell编程 - 10Shell编程之函数案例和cut命令

147 阅读1分钟

函数递归


if  [ $# -ne 1 ];then
        echo"输入有误重新输入"
        exit 3
fi

function num(){
        n=$1
        if [ $n -eq 1 ];then
            echo 1
            return 0
        elif [ $n -gt 1 ];then
            let pre=n-1
            temp=`num $pre`
            let result=n*temp
            echo $result
            return 0
        fi
}

num $1

案例一

#!/bin/bash
if [ $# -ne 1 ]; then
    echo '传入参数错误'
    exit 3
fi
function multitude() {
        if [ $1 -le 1 ]; then
            echo 1
            return 0 # 返回执行状态
        elif [ $1 -gt 1 ]; then
            n=$1
            let pre_n=n-1
            let temp=`multitude $pre_n`
            let result=n*temp
            echo $result
            return 0
        fi
}

案例二

#!/bin/bash
#请把/opt/test/目录下面所有的后缀为.tXt文件,改成后缀为.sh
#反引号需要执行结果的时候加上
dir="/opt/test/"
    
for f in `ls /opt/test/*.txt`;do
    #f就是其中的一个txt文件
    filename='basename $f .txt'
    dist_filename=$filename".sh"
    
    mv $f $dir$dist_filename

done

cut命令——截取字段或字符串

用于显示行中的指定部分,删除文件中指定字段。 命令格式:

cut [选项] 参数

cat file | cut [选项] 参数

常用选项:

选项作用
-d指定分隔符(默认分隔符为Tab)
-f n按字段进行截取。指定第n个字段;1-3表示从第1个字段到第3个字段;1,4,7表示第1、第4、第7个字段
-b以字节为单位进行截取
-c以字符为单位进行截取
–complement排除所指定的字段
–output-delimiter更改输出内容的分隔符

示例:

  • -d 指定分隔符,-f 按字段进行截取。

  • -f,连续的字段使用"-"连接,不连续的字段之间使用逗号。

  • –complement,排除所指定的字段。

  • –output-delimiter,更改输出内容的分隔符。

截取字符串的常用方法:
 1.${i:起始下标值:截取长度}      
 #i是变量,字符的下标值从0开始。例如 ${i:0:2} 
 ​
 2.echo $i | cut -c 1-3
 #-c表示按字符截取,字符下标值从1开始,起始位置-终止位置。1是起始位置,3是终止位置。
 ​
 3.expr substr $i 1 3 
 #下标值从1开始。1代表起始位置,3代表截取的字符长度。

例子i=123456789,要求截取3456。

 [root@kali ~]# i=123456789
 [root@kali ~]# echo ${i:2:4}     //从下标值为2的字符开始截取,共截取4个字符
 3456
 [root@kali ~]# echo $i | cut -c 3-6    //截取第3到第6个字符
 3456
 [root@kali ~]# expr substr $i 3 4    //从第3个字符开始截取,共截取4个字符
 3456