Shell编程之函数与数组

Posted 还行少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell编程之函数与数组相关的知识,希望对你有一定的参考价值。

一、函数

1.Shell函数定义的基本格式

[function] 函数名(){
命令序列
[return x] 
}

基本格式如上,其中【function】是可选的,表示该函数的功能,这个是可以省略掉的;函数名后面加一个(),里面没有内容;执行的命令放在{}里面;【return x】的作用是当命令序列执行完毕后返回给系统一个值;也可以省略

2.示例

递归遍历目录,使目录和普通文件颜色不一样

[root@localhost ~]# cat bl.sh 
#!/bin/bash
function bl(){
for i in `ls  $1`
do
if [  -d $1"/"$i ];then
echo -e "\\033[34m$1/$i \\033[0m"
bl $1"/"$i
else
echo -e  "\\e[1;31m   $1/$i\\e[0m"
fi

done
}

bl $1


在这里插入图片描述

二、数组

1.数组定义方法

1.1 方法一

[root@localhost ~]# a=(1 2 3 4)
[root@localhost ~]# echo ${a[*]}
1 2 3 4
[root@localhost ~]#

1.2 方法二

[root@localhost ~]# b=([0]=1 [1]=2 [2]=3 [3]=4)
[root@localhost ~]# echo ${b[*]}
1 2 3 4
[root@localhost ~]# 

1.3 方法三

[root@localhost ~]# c="1 2 3 4"
[root@localhost ~]# d=($c)
[root@localhost ~]# echo ${d[*]}
1 2 3 4

1.4 方法四

[root@localhost ~]# e[0]=1
[root@localhost ~]# e[1]=2
[root@localhost ~]# e[2]=3
[root@localhost ~]# e[3]=4
[root@localhost ~]# echo ${e[*]}
1 2 3 4
[root@localhost ~]# 

2.数组操作

2.1 元素切片

${数组名[*]:起始位置:长度}
[root@localhost ~]# echo ${a[*]:0:1}
1

2.2 元素替换

${数组名[*]/查找字符/替换字符}
[root@localhost ~]# echo ${a[*]/1/11}
11 2 3 4

2.3 元素删除

[root@localhost ~]# echo ${a[*]/1/11}
11 2 3 4
[root@localhost ~]# unset a[0]
[root@localhost ~]# echo ${a[*]}
2 3 4
[root@localhost ~]# 

3.示例

3.1 冒泡法排序

#/bin/bash
#冒泡排序
a=(10 20 40 70 50)
for ((i=0;i<${#a[*]};i++))
do

   for ((j=0;j<${#a[*]}-$i;j++))
   do
        if [ ${a[j]} -gt ${a[j+1]} ];then
        b=${a[j]}
        a[j]=${a[j+1]}
        a[j+1]=$b
        fi

   done

done
echo ${a[*]}



[root@localhost ~]# bash maopao.sh 
10 20 40 50 70
[root@localhost ~]# bash -x maopao.sh   //将执行脚本的内容输出到屏幕上
+ a=(10 20 40 70 50)
+ (( i=0 ))
+ (( i<5 ))
+ (( j=0 ))
+ (( j<5-0 ))
+ '[' 10 -gt 20 ']'
+ (( j++ ))
+ (( j<5-0 ))
+ '[' 20 -gt 40 ']'
+ (( j++ ))
+ (( j<5-0 ))
+ '[' 40 -gt 70 ']'
+ (( j++ ))
+ (( j<5-0 ))
+ '[' 70 -gt 50 ']'
。。。

3.2 将数组中不足60的删除

#!/bin/bash
a=(10 20 50 60 70 12 30)
b=${#a[*]}
for ((i=0;i<$b;i++))
do
        if [ ${a[i]} -lt 60 ];then
            unset a[i]
        fi
done
echo ${a[*]}

[root@localhost ~]# bash shanchu.sh 
60 70

以上是关于Shell编程之函数与数组的主要内容,如果未能解决你的问题,请参考以下文章

shell编程函数与数组

Shell ❀ 函数与数组

Shell ❀ 函数与数组

Shell ❀ 函数与数组

shell编程之函数

shell脚本编程之函数