shell编程之四(动态创建变量命令eval,数组,function函数,if,if/else判断语句)

eval 动态创建变量命令

    num=1
    for netiface in `seq 5`
    do
        eval netiface_$num=\($num $netiface $netiface_$null\)
        let num++
    done

    eval命令动态创建变量,变量名为netiface_1、netiface_2、...,依次类推。
    变量的值为一个数组,包含编号、网络接口名称、网络接口名称_序号。

数组(shell 支持一元数组)

数组的定义有多种方式

1、方式一(单行定义,静态数组)推荐

area=( zero one two three four )
echo ${area[0]}         # 结果是zero

2、方式二(动态数组)

格式:array=($(命令))        或者      array=(`命令`)
array=($(ls))
echo $array

3、方式二(多行定义)

net=(
zero
one
two
three
four
)
echo ${net[1]}          # 结果是one

4、方式三(指定键定义)

net=(
[0]=two
[1]=seventeen
[2]=twenty-four
)
echo ${net[1]}          # 结果是seventeen

5、方式四:先创建关联数组 site,并创建不同的键值

declare -A site=(["google"]="www.google.com" ["runoob"]="www.runoob.com" ["taobao"]="www.taobao.com")
echo ${site["runoob"]}        #结果是www.runoob.com

6、方式五:先声明一个关联数组,然后再设置键和值

declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"
echo ${site["taobao"]}        #结果是www.taobao.com

7、方式六:(unset 清除数组中的指定元素)

# 使用 @ 或 * 可以获取数组中的所有元素
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D
echo "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"
echo "数组元素个数为: ${#my_array[*]}"
echo "数组元素个数为: ${#my_array[@]}"
echo "查看第三个元素: ${my_array[2]}"
unset my_array[3]           #这行就是使用unset 删除数组中的指定元素
echo "查看第四个元素: ${my_array[3]}"

root@ser552965470679:~# ./test.sh 
数组的元素为: A B C D
数组的元素为: A B C D
数组元素个数为: 4
数组元素个数为: 4
查看第三个元素: C
查看第四个元素: 

Function 函数介绍

函数示例一:
function function_name {
    local loc_var=23       # 声明为局部变量,必须使用关键字 local 指定变量为局部变量,他才是局部变量
    global_var=999         # 没有声明为局部变量,默认为全局变量
}

函数示例二:
function_name1() {
   {
     ...
    } < file
}

function_name2() {
   {
     ...
    } | tr a-z A-Z
}

注意:每个函数都是一个子shell

简单的if结构

(如果满足if后面的表达式expression为真0,则执行command命令,然后退出,不满足就不执行command,直接退出)

    if expression
    then
        command
    fi
或则
    if expression;then
        command
    fi

例子(判断一个输入是否为空,并用exit返回指定值)

#!/bin/bash
echo "请输入一个字符串"
read a

if [ -z "$a" ];then
    echo "对不起,你未输入字符串"
    exit 1
fi

if/else简单结构

(如果满足if后面的表达式,则执行command1,如果不满足表达式,则执行else后面的command2命令)

    if expression;then
        command1
    else
        command2
    fi

if/else嵌套

(可以判断多个条件,注意不要漏掉fi)

    if expression1;then
        if expression2;then
            command1
        else
            command2
        fi
    else
        commadn3
    fi

if/elif/else结构

(用来解决上面那种容易漏掉fi的情况,提升可读性)

    if expression1;then
        command1
    elif expression2;then
        command2
    elif expression3;then
        command3
    else
        command4
    fi

case结构

(同样适用于多分支结构)

    case variable in
    value1)
        command1
        command2;;
    value2)
        command2;;
    value3)
        command3;;
    .......
    *)
        command;;
    esac

例子

    case "$mouth" in
    1)
        echo "this is 1 月";;
    2)
        echo "this is 2 月";;
    .........
    12)
        echo "this is 12 月";;
    *)
        echo "数字错误";;
    esac
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/510.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2023/5/29作者: 辣条①号

目标:网络规划设计师、系统工程师、ceph存储工程师、云计算工程师。 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录