shell--函数与数组

1.函数

1.1函数作用范围

函数在shell脚本中仅在当前shll环境中有效,
shell脚本中变量默认全局有效
若将变量限定在函数内部使用,在变量前加local命令

1.2定义函数操作

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

function可省略
return x:x为数值,即执行完返回一个值,0或非0值

1.3递归函数

调用自己本身的函数

#!/bin/bash
# digui
list()
{
for f in `ls $1`
do
        if [ -d "$1/$f" ];
        then echo "$f"
        list "$1/$f" "$2"
        else
        echo "$2$f"
        fi
done
}
list "/var/log" " "

2.数组

数组包含的数据类型:
数值类型
字符类型
使用""或’'定义

2.1数组定义方法

①:数组名=(value0 value1 value2...)
②:数组名= [0]=value [1]=value [2]=value
③:列表名="value0 value1 value2"
数组名=($列表名)
④:数组名[0]="value"
数组名[1]="value"
数组名[2]="value"

2.2获取数组长度

echo ${数组名[*/@]}    ##数组内容
echo ${#数组名[*/@]}   ##数组内容个数
echo ${数组名[下标]}    ##获取数组中某个下标的值。下标:$0.$1.$2

2.3数组遍历

for v in ${数组名[*/@]}   ##v:变量名
do
	echo $v
done

2.4数组切片

${数组名[*/@]:起始位置:长度}
例:a=1 2 3 4 5
${a[@]:0:2}    ##表示从$0开始,长度为2,即内容为12

2.5数组的替换

不替换原先数组内容,仅在输出时替换输出显示

${数组名[*/@]/查找字符/替换字符}

2.6数组删除

a=1 2 3 4 5
unset a    ##删除

2.7冒泡排序

vi num.sh

#!/bin/bash
# 冒泡排序
num=(60 30 50 20 100 70)
for ((i=1;i<${#num[*]};i++))
do
        for ((j=0;j<${#num[*]}-$i;j++))
        do
                if [ ${num[$j]} -gt ${num[(($j+1))]} ]
                then
                temp=${num[$j]}
                num[$j]=${num[(($j+1))]}
                num[(($j+1))]=$temp
                fi
        done
done
echo ${num[*]}

3.shell脚本调试

①echo命令
②bash命令

sh [-nvx] 脚本名

选项:-n:不会执行该脚本,并检查语法
-v:执行时,先将内容输出到屏幕再执行脚本
-x:将执行内容输出到屏幕上
③set命令

set -x:开启调节模式
set +x:关闭调节模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值