首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Shell函数和数组

Shell函数和数组

原创
作者头像
入门笔记
修改2021-01-11 10:24:51
修改2021-01-11 10:24:51
5030
举报
文章被收录于专栏:入门小站入门小站

函数格式:

代码语言:txt
复制
function test(){
      command
}

test() {
      command
}

function 关键字可写,也可不写。

函数调用

代码语言:txt
复制
#!/bin/bash
test() {
      echo "This is a function."
}
test
# bash test.sh
This is a function.

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

函数返回值

代码语言:txt
复制
#!/bin/bash
test() {
      VAR=$((1+1))
      return $VAR
}
test
echo $?
# bash test.sh

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

函数传参

代码语言:txt
复制
#!/bin/bash
test() {
      echo "Hello $1"
}
test world
# bash test.sh
Hello world

通过 Shell 位置参数给函数传参。 函数也支持递归调用,也就是自己调用自己。

代码语言:txt
复制
#!/bin/bash
test() {
      echo $1
      sleep 1
      test hello
} 
test

数组

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

格式:

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

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

定义或者初始化数组的3种方法

  • 直接定义:arrar=(1 2 3)
  • 新建数组并添加元素:array[下标]=元素
  • 将命令输出作为数组元素:array=($(命令))

数组操作

代码语言:txt
复制
获取所有元素:
# echo ${array[*]} abc 获取元素下标:
# echo ${!a[@]} 012 获取数组长度:
# echo ${#array[*]} 3
# *和@ 都是代表所有元素
获取第一个元素:
# echo ${array[0]} a
获取第二个元素:
# echo ${array[1]} b
获取第三个元素:
# echo ${array[2]} c
添加元素:
# array[3]=d
# echo ${array[*]} abcd 添加多个元素:
# array+=(e f g)
# echo ${array[*]} abcdefg 删除第一个元素:
# unset array[0]
# echo ${array[*]} bcdefg
# 删除会保留元素下标
删除数组:
# unset array
数组下标从 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

遍历数组所有元素

代码语言:txt
复制
方法 1:
#!/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 

方法 2: #!/bin/bash
IP=(192.168.1.1 192.168.1.2 192.168.1.3)
for   IP   in ${IP[*]}; do
echo $IP done
wx.jpg
wx.jpg

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 函数格式:
  • 函数调用
  • 函数返回值
  • 函数传参
  • 数组
    • 定义或者初始化数组的3种方法
    • 数组操作
    • 遍历数组所有元素
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档