GitHub星数1.3W!五分钟带你搞定Bash脚本使用技巧

新闻
Bash脚本比我们想象中的都要强大,通过Bash脚本,大多数任务都可以让你在无任何其它语言或第三方依赖的安装环境下,快速写出脚本程序。

 Bash脚本比我们想象中的都要强大,通过Bash脚本,大多数任务都可以让你在无任何其它语言或第三方依赖的安装环境下,快速写出脚本程序。

在Bash中调用外部进程是非常繁琐的,过度调用会导致明显的减速,通过内置方法编写的脚本和程序会更快,所需的依赖也会更少,并且帮助你更好的理解编程语言。

[[272526]]

 

有位澳大利亚工的程师在Github上开源了一本书——《pure bash bible》

 

目前,这本书已经在Github上获得 13148 个Star,905 个Fork(Github地址:https://github.com/dylanaraps/pure-bash-bible)

本书收集汇总了编写 bash 脚本经常会使用到的一些代码片段,无论是常见和不太常见的方法都可以在这书里找到,通过书中的代码片段,可以删除脚本中的依赖项,并且在大多数情况下可以让程序运行的更快。

书中依照字符串、数组、正则表达式、文件处理、变量等脚本程序的常用功能进行分类,每个分类下都提供了具体 bash 代码实现。

删除字符串前后空格:

例如,下面的函数通过查找字符串前后空格字符,并把它们移除。以下为功能使用:

  1. trim_string() { 
  2.     # Usage: trim_string "   example   string    " 
  3.     : "${1#"${1%%[![:space:]]*}"}" 
  4.     : "${_%"${_##*[![:space:]]}"}" 
  5.     printf '%s\n' "$_" 

示例:

  1. $ trim_string "    Hello,  World    " 
  2. Hello,  World 
  3.  
  4. name="   John Black  " 
  5. $ trim_string "$name" 
  6. John Black 

在字符串上使用正则表达式:

  1. regex() { 
  2.     # Usage: regex "string" "regex" 
  3.     [[ $1 =~ $2 ]] && printf '%s\n' "${BASH_REMATCH[1]}" 

用法示例:

  1. $ # Trim leading white-space
  2. $ regex '    hello' '^\s*(.*)' 
  3. hello 
  4.  
  5. $ # Validate a hex color. 
  6. $ regex "#FFFFFF" '^(#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}))$' 
  7. #FFFFFF 
  8.  
  9. $ # Validate a hex color (invalid). 
  10. $ regex "red" '^(#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}))$' 
  11. no output (invalid) 

脚本的示例用法:

  1. is_hex_color() { 
  2.     if [[ $1 =~ ^(#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}))$ ]]; then 
  3.         printf '%s\n' "${BASH_REMATCH[1]}" 
  4.     else 
  5.         printf '%s\n' "error: $1 is an invalid color." 
  6.         return 1 
  7.     fi 
  8.  
  9. read -r color 
  10. is_hex_color "$color" || color="#FFFFFF" 
  11.  
  12. # Do stuff. 

删除重复的数组:

  1. remove_array_dups() { 
  2.     # Usage: remove_array_dups "array" 
  3.     declare -A tmp_array 
  4.  
  5.     for i in "$@"; do 
  6.         [[ $i ]] && IFS=" " tmp_array["${i:- }"]=1 
  7.     done 
  8.  
  9.     printf '%s\n' "${!tmp_array[@]}" 

用法示例:

  1. $ remove_array_dups 1 1 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 5 
  2.  
  3. $ arr=(red red green blue blue) 
  4. $ remove_array_dups "${arr[@]}" 
  5. red 
  6. green 
  7. blue 

本书完整的脚本功能的代码片段如下:

 

关于作者

[[272527]]

 

Dylan Araps是来自澳大利亚墨尔本的开源开发人员,从小就对开源产生了极大的热情,多年来开源了许多项目,14岁,就离开了学校,开始专注于 Linux、编程和其他相关技能的学习,Dylan Araps开源的项目得到了广泛的应用,并在Unix和Linux社区中得到广泛关注。

开源最前线(ID:OpenSourceTop) 综合整理

 

综合自:https://leanpub.com/u/dylanaraps、https://leanpub.com/u/dylanaraps

责任编辑:武晓燕 来源: 开源最前线
相关推荐

2017-09-27 11:00:50

LinuxBash使用技巧

2014-04-22 09:42:12

Bash脚本教程

2021-12-01 06:50:50

Docker底层原理

2021-10-19 07:27:08

HTTP代理网络

2018-04-24 14:52:48

LinuxBash脚本

2020-12-18 07:33:20

SpringSchedule组件

2020-11-23 16:23:59

CSS设计技术

2021-09-06 07:59:56

死锁工具多线编程

2019-12-23 16:42:44

JavaScript前端开发

2020-02-19 19:26:27

K8S开源平台容器技术

2020-02-21 19:54:09

HTTPS 配置手把手教

2015-12-03 14:10:26

systemd容器Linux

2022-12-13 10:05:27

定时任务任务调度操作系统

2021-07-15 06:43:11

Bash调试脚本

2020-04-01 16:30:32

TCP互联网Linux

2021-01-13 09:23:23

优先队列React二叉堆

2024-11-07 16:09:53

2019-08-07 07:11:21

OSI七层模型TCPIP五层模型

2018-06-26 09:37:07

时序数据库FacebookNoSQL

2024-08-13 11:13:18

点赞
收藏

51CTO技术栈公众号