shell 数组和函数

First Post:

Last Update:

shell 数组和函数


数组

数组: 用一个固定的字符串, 代替多个不固定的字符串

数组类型

普通数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#每个值对应一个索引
name=abcd

#打印对应的索引值(第一个是起始索引, 第二个是步长)
echo ${name:1:2}

#定义数组
#narry: 数组名; (.. .. ..)数组元素
narry=(man woman align unknow)

#自定义索引
mark=([3]=bilibili [2]=voiblog [1]=TC)

#调用数组, [索引], [*]或[@]指选中所有索引
echo ${narry[*]}

#查看索引(!指取反)
echo ${!narry[*]}
a b c d
索引 0 1 2 3

使用例:

1
2
3
4
5
6
7
8
#将指定文件的每一行作为元素赋值给pd数组
pd=('cat /etc/passwd')

#可以一次定义一个值
narry[0]="myNarry"

#查看数组
declare -a |grep <数组名> #declare -a 查看所有变量

关联数组

1
2
3
4
5
6
7
8
9
#必须先声明关联数组
declare -A <数组名>

#自定义索引
mark=([web]=bilibili [home]=voiblog [cloud]=TC)


#调用数组元素
echo ${mark[web]}
bilibili voiblog TC
索引 web home cloud

for 定义数组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#通过循环定义和显示数组
#例:
#!/bin/bash
num=0 #若num不声明, 则num++, num初始值为0; ++num, 初始值为1

for i in './test.txt'
do
line[num++]=$i
done

#遍历数组
for i in ${!line[*]}
do
echo $j
done

变量 IFS, 指定分割符, 用于更改 for 循环的分隔符1


函数

函数意为复用代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#函数定义

test () { echo "这是函数" }
function test { echo "另一种函数定义方法" }

#函数的参数传递
# $1 代表传入的第一个参数, 以此类推, $n 代表第n个参数
# 当 n>=10 时, 参数应写为 ${n}
test () {
echo "$1"
}

#调用函数
test <参数1> <参数2> ...

特殊参数

参数 说明
$? 显示最后命令的退出状态. 0表示没有错误, 其他任何值表明有错误
$# 传递到脚本或函数的参数个数
$* 以一个单字符串显示所有向脚本传递的参数

shift 移动参数(了解)2

使参数产生位移


  1. 1.变量名尚不确定, 请查阅网络资料
  2. 2.了解