加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

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

发布时间:2019-08-04 13:30:26 所属栏目:移动互联 来源:佚名
导读:Bash剧本比我们想象中的都要强盛,通过Bash剧本,大大都使命都可以让你在无任何其余说话或第三方依靠的安装情形下,快速写出剧本措施。 在Bash中挪用外部历程长短常繁琐的,太过挪用会导致明明的减速,通过内置要领编写的剧本和措施会更快,所需的依靠也会
副问题[/!--empirenews.page--]

Bash剧本比我们想象中的都要强盛,通过Bash剧本,大大都使命都可以让你在无任何其余说话或第三方依靠的安装情形下,快速写出剧本措施。

在Bash中挪用外部历程长短常繁琐的,太过挪用会导致明明的减速,通过内置要领编写的剧本和措施会更快,所需的依靠也会更少,而且辅佐你更好的领略编程说话。

GitHub星数1.3W!五分钟带你搞定Bash剧本行使能力

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

GitHub星数1.3W!五分钟带你搞定Bash剧本行使能力

今朝,这本书已经在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 '%sn' "$_" 

示例:

  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 '%sn' "${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 '%sn' "${BASH_REMATCH[1]}" 
  4.     else 
  5.         printf '%sn' "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 '%sn' "${!tmp_array[@]}" 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读