GitHub标星2.4W!五分钟带你搞定Bash脚本使用技巧
开源最前线(ID:OpenSourceTop) 综合整理综合自:https://leanpub.com/u/dylanaraps、https://leanpub.com/u/dylanaraps
Bash脚本比我们想象中的都要强大,通过Bash脚本,大多数任务都可以让你在无任何其它语言或第三方依赖的安装环境下,快速写出脚本程序。
在Bash中调用外部进程是非常繁琐的,过度调用会导致明显的减速,通过内置方法编写的脚本和程序会更快,所需的依赖也会更少,并且帮助你更好的理解编程语言。
有位澳大利亚工的程师在Github上开源了一本书——《pure bash bible》
目前,这本书已经在Github上获得 24004 个Star,2005 个Fork(Github地址:https://github.com/dylanaraps/pure-bash-bible)
本书收集汇总了编写 bash 脚本经常会使用到的一些代码片段,无论是常见和不太常见的方法都可以在这书里找到,通过书中的代码片段,可以删除脚本中的依赖项,并且在大多数情况下可以让程序运行的更快。
书中依照字符串、数组、正则表达式、文件处理、变量等脚本程序的常用功能进行分类,每个分类下都提供了具体 bash 代码实现。
删除字符串前后空格:
例如,下面的函数通过查找字符串前后空格字符,并把它们移除。以下为功能使用:
trim_string() {
# Usage: trim_string " example string "
: "${1#"${1%%[![:space:]]*}"}"
: "${_%"${_##*[![:space:]]}"}"
printf %s
"$_"
}
示例:
$ trim_string " Hello, World "
Hello, World
$ name=" John Black "
$ trim_string "$name"
John Black
在字符串上使用正则表达式:
regex() {
# Usage: regex "string""regex"
[[ $1 =~ $2 ]] && printf %s
"${BASH_REMATCH[1]}"
}
用法示例:
$ # Trim leading white-space.
$ regex hello ^s*(.*)
hello
$ # Validate a hex color.
$ regex "#FFFFFF" ^(#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}))$
#FFFFFF
$ # Validate a hex color (invalid).
$ regex "red" ^(#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}))$
# no output (invalid)
脚本的示例用法:
is_hex_color() {
if [[ $1 =~ ^(#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3}))$ ]]; then
printf %s
"${BASH_REMATCH[1]}"
else
printf %s
"error: $1 is an invalid color."
return 1
fi
}
read -r color
is_hex_color "$color" || color="#FFFFFF"
# Do stuff.
删除重复的数组:
remove_array_dups() {
# Usage: remove_array_dups "array"
declare -A tmp_array
for i in"$@"; do
[[ $i ]] && IFS=" " tmp_array["${i:- }"]=1
done
printf %s
"${!tmp_array[@]}"
}
用法示例:
$ remove_array_dups 1 1 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 5
1
2
3
4
5
$ arr=(red red green blue blue)
$ remove_array_dups "${arr[@]}"
red
green
blue
完整代码片段请访问github
关键词
脚本
字符串
程序
代码
示例
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。