第五章 Shell函数与数组

5.1 函数

格式:

func() {
    command
}

示例1:

#!/bin/bash
func() {
    echo "This is a function."
}
func
# bash test.sh
This is a function.

Shell函数很简单,函数名后跟双括号,再跟双大括号。通过函数名直接调用,不加小括号。

示例2:函数返回值

#!/bin/bash
func() {
    VAR=$((1+1))
    return $VAR
    echo "This is a function."
}
func
echo $?
# bash test.sh
2

return在函数中是定义状态返回值,返回并终止函数,但返回的只能是数字,类似于exit 0。

示例3:函数传参

#!/bin/bash
func() {
    echo "Hello $1"
}
func world
# bash test.sh
Hello world

通过Shell位置参数给函数传参。


博客地址:http://lizhenliang.blog.51cto.com

QQ群:Shell/Python运维开发群 323779636


5.2 数组

数组是相同类型的元素按一定顺序排列的集合。

格式:

array=(元素1 元素2 元素3 ...)

用小括号初始化数组,元素之间用空格分隔。

定义方法1:初始化数组
array=(a b c)
定义方法2:新建数组并添加元素
array[下标]=元素
定义方法3:将命令输出作为数组元素
array=($(command))

数组操作:

获取所有元素
# echo ${array[*]}  # *和@ 都是代表所有元素
a b c
获取数组长度
# echo ${#array[*]}
3
获取第一个元素
# echo ${array[0]}
a
获取第二个元素
# echo ${array[1]}
b
获取第三个元素
# echo ${array[2]}
c
添加元素
# array[3]=d
# echo ${array[*]}
a b c d
添加多个元素
# array+=(e f g)
# echo ${array[*]}
a b c d e f g
删除a元素
# unset array[a]  # 用名字删除会保留元素下标
# echo ${array[*]}
b c d e f g
删除第一个元素
# unset array[1] 
# echo ${array[*]}
c d e f g

数组下标是以0开始。

示例1:讲seq生成的数字序列循环放到数组里面

#!/bin/bash
for i in $(seq 1 10); do
    array[a]=$i
    let a++
done
echo ${array[*]}
# bash test.sh
1 2 3 4 5 6 7 8 9 10
删除数组
# unset array

示例2:遍历数组元素

#!/bin/bash
IP=(192.168.1.1 192.168.1.2 192.168.1.3)
for ((i=0;i<${#IP[*]};i++)); do
    echo ${IP[$i]}
done
# bash test.sh
192.168.1.1
192.168.1.2
192.168.1.3
时间: 2024-08-24 23:24:38

第五章 Shell函数与数组的相关文章

第五章 shell函数的定义、执行、传参和递归函数

第五章 shell函数的定义.执行.传参和递归函数 Bash(Bourne Again shell)也支持函数,在编写大型复杂脚本的时候,可以用函数把代码编写成一个一个功能相对独立的代码块,使代码模块块.结构清晰.有效的减少程序的代码量.但是bash shell是一种解释性语言,执行效率没有编译性语言高. shell函数的定义 格式一:( function name() { command sequence (命令序列) } 格式二: name() { command sequence (命令序

shell 函数 返回数组

shell 函数 返回数组,布布扣,bubuko.com

shell - 函数、数组定义与调用

#!/bin/bash # returning an array value function arraydblr() { local origarray local newarray local elements local i origarray=(`echo "[email protected]"`) newarrray=(`echo "[email protected]"`) elements=$[ $# -1 ] for((i=0;i<=$eleme

第五章 shell学习之文件的排序、合并和分割

sort命令 sort [选项] [输入文件] 选项: -c 测试文件是否已经排序,如果未被排序则输出第一个未被排序的记录 -k 指定排序的域 -m 合并两个已排序的文件,合并的文件也已经排序,如sort -m a1 a2,a1的记录被有序的插入a2 -n 根据数字的大小进行排序,一般放在域号后,如-k3n -o 将输出重定向到指定文件 -r 将排序结果逆向显示 -t 改变域分割符,如-t: -u 去除结果中的重复行 sort和awk联合 例: [[email protected] tmp]#

shell函数和数组

[toc] shell函数和数组 一.shell中的函数 1.1 函数格式1 function name { commands } 示例1: #! /bin/bash function inp(){ //定义一个inp的函数 echo $1 $2 $3 $0 $# } inp 1 a 2 b //传入参数 //传入参数 运行结果 [[email protected] ~]# sh function1.sh 1 a 2 function1.sh 4 [ ] $1 : 第一个参数 就是如上的"2&q

第十五章 shell正则表达式

第十五章 shell正则表达式 见图片 Shell正则表达式 正则表达式的分类 基本的正则表达式(Basic Regular Expression 又叫Basic RegEx 简称BREs) 扩展的正则表达式(Extended Regular Expression 又叫Extended RegEx 简称EREs) Perl的正则表达式(Perl Regular Expression 又叫Perl RegEx 简称PREs) 基本组成部分 正则表达式的基本组成部分. 正则表达式 描述 示例 Bas

Shell 函数、数组与正则表达式

防伪码:白日依山尽,黄河入海流. 5.1  函数 格式: func() { command } 示例 1: #!/bin/bash func() { echo "This is a function." } func # bash test.sh This is a function. Shell 函数很简单,函数名后跟双括号,再跟双大括号.通过函数名直接调用,不加小括号. 示例 2:函数返回值 #!/bin/bash func() { VAR=$((1+1)) return $VAR

linux基础学习第十二天(shell函数、数组以及yum使用及编译安装)

2016-08-18 授课内容: shell编程基础(select 循环与菜单.函数) yum管理.定制yum仓库 select 循环与菜单 select variable in list do 循环体命令 done 1.select 循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上,并显示PS3 提示符(默认是#?),可以重新定义PS3,等待用户输入 2.用户输入菜单列表中的某个数字,执行相应的命令,用户输入被保存在内置变量REPLY 中 [19:45 [email protec

Shell函数与数组

1.什么是函数 被命名的语句块儿:有开始和结束的边界; begin ...... end 2.Shell语句中的语句块儿 (1).(语句1:语句2:...) (2).{语句1:语句2:...} (3).if else elif while for (4).被命名的语句块儿,函数: 3.Shell函数的定义 函数的要素:(1).函数名称 (2).语句块儿 (3).返回值 (4).参数 Shell函数定义2种基本格式: (1) function 函数名称(){ $1 //若干语句 } 返回值类型:是