立即登录

shell脚本定义数组 [LN_12] Shell编程-Shell数组的定义&使用、函数的定义&调用

11/28 01:10:58

shell脚本定义数组 [LN_12] Shell编程-Shell数组的定义&使用、函数的定义&调用

目录结构

一、Shell数组的定义&使用
    1. 定义数组
    2. 读取数组元素
    3. 获取数组的长度
    4. 案例:定义数组,以不同方式获取数组元素
二、Shell函数的定义、调用
    1. Shell函数的定义
    2. Shell函数的调用
三、函数参数

一、Shell数组的定义&使用

Bash Shell只支持一维数组,不支持多维数组。数组中可存放多个值,初始化时不需要定义数组大小,数组元素的下标从0开始。

1. 定义数组

语法格式:

方式1

array_name=(值1 值2 值3 ... 值n)

方式2

array_name[0]=值1
array_name[1]=值2
array_name[2]=值3
...
array_name[n-1]=值n

PS:Shell数组用小括号()表示,每个元素之间以空格" "进行分割

2. 读取数组元素

语法格式:

${array_name[index]}

shell脚本打印数组_shell脚本定义数组_shell脚本数组变量

使用@或*可获取数组中的所有元素:

${array_name[*]}
${array_name[@]}

3. 获取数组的长度

${#array_name[*]}
${#array_name[@]}

4. 案例:定义数组,以不同方式获取数组元素

vim func-005.sh

#!/bin/bash
# 定义数组
array_test=(A "B" C)
# 输出数组的所有元素
echo "【方式1】数组的元素为:${array_test[*]}"
echo "【方式2】数组的元素为:${array_test[@]}"
echo -e "【方式3】输出数组的所有元素:n元素1:${array_test[0]}, 元素2:${array_test[1]}, 元素3:${array_test[2]}"
echo "【方式4】列出数组的所有元素:"
# 循环输出数组所有元素
for((i=0;i<=${#array_test[*]-1};i=i+1))
    do
        echo "${array_test[i]}"
    done

执行结果:

二、Shell函数的定义、调用1. Shell函数的定义

Linux Shell 可以用户定义函数,然后在Shell脚本中根据需要调用函数

Shell函数的定义格式:

[ function ] funname [()]
{
    action;
    [return int;]
}

PS:

① 可以带function定义:function fun()辅助卡盟,也可不带任何参数直接定义:fun()

② 参数返回,非必须。若写返回值,则以最后一条命令运行结果作为返回值;return后跟数值n(0-255)

2. Shell函数的调用

案例1:在Shell脚本中定义一个函数,并进行调用(不写return返回)

vim func-001.sh

#!/bin/bash
# 定义函数 hiFunc()
hiFunc(){
    echo "Hi, Linux Shell!"
}
# 调用以上函数(直接写函数名称)
hiFunc

赋权:chmod 755 func-001.sh

执行:./func-001.sh

执行结果:

shell脚本数组变量_shell脚本打印数组_shell脚本定义数组

案例2:定义一个写有return返回的函数,实现调用用户的输入数字进行运算

vim func-002.sh

#!/bin/bash
# 定义函数addFunc()
addFunc(){
    read -p "请输入第1个整数:" num1
    read -p "请输入第2个整数:" num2
    result1=$(($num1+$num2))
    result2=$(($num1*$num2))
    echo "输入的2个整数之和为:$result1"
    # 编写返回值(返回值需要满足0-255之间的整数)
    return $result2
}
# 调用函数addFunc
addFunc
# 调用以上函数后,通过 $?获取函数返回值,即 $result2
echo "输入2个数之乘积为:$?"

执行结果:

PS:

① 函数调用,仅需要用函数名称即可

② 在调用函数之后通过$?可获取对应函数的返回值

③ 在Shell脚本中需要先定义函数,再进行调用(即函数位于脚本最前面位置)

④ return返回的语法:return [n],n需要为0-255直接的数字。若为非数字or负数,则会提示语法错误;若n>255,则会根据周期性返回0-255之间的值(如:n=255,返回255;n=256,返回0;n=257,返回1)

shell脚本打印数组_shell脚本数组变量_shell脚本定义数组

三、函数参数

在Shell中调用函数时可向其传递参数。在函数体内部通过 $n 的形式来获取参数的值shell脚本定义数组,如:$1表示第1个参数,$2表示第2个参数...;当n>=10时,表示为 ${n},如:${10}、${11}

位置参数变量:是预定义变量中的一类变量

位置参数变量作用

$n

利用参数向程序中传递需要调用的值

n为数字,n≤9直接用数字,n≥10都需要用{}包含:

$0表示命令本身

$1-$9表示第1-9个参数

${10}表示第10个参数

$*

表示命令行中所有的参数shell脚本定义数组,所有参数看作一个整体

$@

表示命令行中的所有参数,每个参数区分对待

$#

表示命令行中所有参数的个数(不统计$0)

预定义变量

预定义变量作用

最后一次执行的命令所返回的状态:

若变量值为0,说明上一个命令正确执行

若变量值为非0,说明上一个命令执行不正确

$$

当前进程的进程号(PID)

$!

后台运行的最后一个进程的进程号(PID)

案例1:定义函数,实现在指定目录下,查找出以"if-"开头的所有.sh脚本名称,然后循环将这些名称输出

vim func-003.sh

#!/bin/bash

shell脚本打印数组_shell脚本定义数组_shell脚本数组变量

执行结果:

案例2:利用位置参数变量输出指定位置的脚本名称

vim func-004.sh

#!/bin/bash
# 定义函数paraOutput
paraOutput(){
    echo "当前目录下总共有.sh文件有$#个:"
    echo "第1个.sh文件为:$1"
    echo "第2个.sh文件为:$2"
    echo "第10个.sh文件为:${10}"
}
# 调用函数,向脚本传递查询获取的参数值
paraOutput $(ls *.sh)

参考资料:Shell 函数

来源:【九爱网址导航www.fuzhukm.com】 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

最新资讯