网络书屋(Web Reading Room)

A blogging framework for hackers.

Bash Array 和拓展的pattern Match

通过Bash_It的学习,第一次意识到Shell数组的不一样的写法。 并且也看到Pattern Match的一些用途。

1 Array

1.1 Bash数组定义

通过(1,2,3)区分于fortran语言的(/1,2,3/).

bash1=(34,5,6,4)

bash2=(“34”,“5”,“5”,“4”)

1.2 Bash关联数组定义

通过 -A开关选项定义一个关联数组。

declare -A bash1

bash1[“34”]=“53”

bash1[“56”]=“45”

1
2
3
4
5
declare -A array
for subscript in a b c d e
     do
         array[$subscript]="$subscript $RANDOM"
     done

也可以在命令行使用

1
2
3
4
  a=($(ls))  #而不是a=$(ls)

  #这样就可以使用
  ${a[1]}

1.3 Bash数组添加数据

bash1+=“54”

1.4 Bash数组显示数据和便利

1
2
3
4
5
6
##单个显示
printf "%s\n" "${array["c"]}"

##遍历
printf "%s\n" "${array[@]}"
printf "%s\n" "${array[*]}"

1.5 拓展的操作

#表示长度的作用

  1. ${#array2} 现实第二个数组元素的长度
  2. ${#array[@]} 显示全部数组元素的长度
  3. ${#array[*]} 显示全部数组元素的长度
  4. ${#array[@]:2:3} 获取第2个到3个的长度
  5. ${!array[@]} !的作用是现实所有的key在数组当中。

进一步参考

pro_Bash_programming第五章 array部分


2. PATTERN MATCH

1
2
3
4
5
?(pattern-list)   Matches zero or one occurrence of the given patterns
*(pattern-list)   Matches zero or more occurrences of the given patterns
+(pattern-list)   Matches one or more occurrences of the given patterns
@(pattern-list)   Matches one of the given patterns
!(pattern-list)   Matches anything except one of the given patterns

比如:

1
  $ ls +(ab|def)*+(.jpg|.gif)

进一步参考 ls使用PATTERN-MATCH


Linux基础资料参考

GNU官网

鸟哥论坛

Linux_About

CN_Blogs的一个收集

3 事情流程

  1. 认定你的事情
  2. 检验

拓展为:

  1. 认清楚这件事情;
  2. 分析与这件事情有关的一切的一切;
  3. 制定做好这件事情的计划;
  4. 实施计划;
  5. 验证这件事情的结果;