Shell _数组的应用实践

本文详细介绍Bash脚本中数组的定义、打印、赋值、删除、截取与替换等基本操作,并通过实例演示了如何使用循环语句打印数组元素、筛选短单词以及批量检查网站状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.数组定义:
    #array=(value1 value2 value3)
    #array=(1 2 3)
    #array=([1]=one [2]=two [3]=three)
    #array=($(ls *.txt)) #<==统计文件数量
    #touch {1..5}.txt #<==批量创建文件
    
2.数组的打印及输出
    #array=(1 2 3)
    #echo ${array[*]} #<==全部打印
    #echo ${array[1]}
    #echo ${#array[*]} #<==统计数组数量
    
3.数值赋值:
    #array[3]=demo
    
4.数组删除(unset):
    #array=(1 2 3)
    #unset array[1]
    #echo ${array[*]}
    
5.数组内容的截取和替换
    截取
    #array=(1 2 3 4 5)
    #echo ${array[@]:1:3} #<==从下标1的元素开始截取,共取3个数组元素
    #array=({a..z})
    
    替换
    #array=(1 2 3 4 5 )
    #echo ${array[@]/1/b} #<==数组中的1替换b

===================================================
实战:
1.通过普通for循环语句打印数组元素
#!/bin/bash
array=(1 2 3 4 5)
for i in ${array[*]}
do
    echo $i
done
===================================================

2.使用while循环语句打印数组元素
#!/bin/bash
array=(1 2 3 4 5)
i=0
while ((i<${#array[*]}))
do
    echo ${array[i]}
    ((i++))
done
====================================================

3.利用bash for循环打印下面这句话中字母不大于6的单词

3.1通过数组方法实现
#!/bin/bash
arr=(Success is getting what you want, happiness is wanting what you get) 
for ((i=0;i<${#arr[*]};i++))
do
    if [${#arr[$i]} -lt 6];then
        echo "$arr[$i]"
    fi
done
for count in ${arr[*]}
do
    if [ `expr length $count` -lt 6 ];then
        echo $count
    fi
done
------------------------------------------------------
3.2通过awk循环实现
char="Success is getting what you want, happiness is wanting what you get"
echo $char |awk '{for(i=0;i<=NF;i++) if(length($i)<=6) print $i}'

====================================================
4.批量检查多个网站地址是否正常
#!/bin/bash

#Date 10:23 2018-09-27
#Author : demo
#Mail ***@qq.com
#Function: check_url
#Version: 1.1 

. /etc/init.d/functions

check_count=0
url_list=(
blog.youkuaiyun.com/sinat_23957257
www.google.com
www.baidu.com
www.zhihu.com/
)

function wait()
{
    echo -n "3 秒后,执行检查URL操作"
    for ((i=0;i<3;i++))
    do
        echo -n ".";sleep 1
    done
    echo
}

function check_url()
{
    wait
    for ((i=0; i< `echo ${#url_list[*]}`; i++))
    do
        wget -o /dev/null -T 3 --tries=1 --spider ${url_list[$i]}

        if [ $? -eq 0 ];then
            action "${url_list[$i]}" /bin/true
        else
            action "${url_list[$i]}" /bin/false
        fi
    done
    ((check_count++))
    
}
main()
{

    while true    
    do
        check_url
        echo "------check count:${check_count}---------------"
    sleep 10
    done


}
main

=======================================================================

    
    
    
    
    
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值