函数递归
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