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编程之函数与数组的主要内容,如果未能解决你的问题,请参考以下文章