1、Give ECHO colors see see!

NORMAL=$(tput sgr0)
GREEN=$(tput setaf ; tput bold)
YELLOW=$(tput setaf )
RED=$(tput setaf ) function red() {
echo -e "$RED$*$NORMAL"
} function green() {
echo -e "$GREEN$*$NORMAL"
} function yellow() {
echo -e "$YELLOW$*$NORMAL"
} # To print success
green "Task has been completed" # To print error
red "The configuration file does not exist" # To print warning
yellow "You have to use higher version."

关于上面这个,我个人感觉不是很好,还有别的方法,以后再说吧!

2、打印 Debug 信息

function debug() {
if [[ $DEBUG ]]
then
echo ">>> $*"
fi
} # For any debug message
debug "Trying to find config file"

合并成一行:

# From cool geeks at hacker news
function debug() { ((DEBUG)) && echo ">>> $*"; }
function debug() { [ "$DEBUG" ] && echo ">>> $*"; }

3、检查可执行文件是否存在:

OK=
FAIL= function require_curl() {
which curl &>/dev/null
if [ $? -eq ]
then
return $OK
fi return $FAIL
}

其实也就一行就可以解决:function require_curl() {which culr &>/dev/null;}

4、打印命令的使用方式:

cat << EOF

Usage: myscript <command> <arguments>

VERSION: 1.0

Available Commands

    install - Install package

    uninstall - Uninstall package

    update - Update package

    list - List packages

EOF

5、给变量加默认值:

URL=${URL:-http://localhost:8080}

6、检查字符串变量的长度:

if [ ${#authy_api_key} !=  ]
then
red "you have entered a wrong API key"
return $FAIL
fi

7、半延迟读取数据:

READ_TIMEOUT=
read -t "$READ_TIMEOUT" input # if you do not want quotes, then escape it
input=$(sed "s/[;\`\"\$\' ]//g" <<< $input) # For reading number, then you can escape other characters
input=$(sed 's/[^0-9]*//g' <<< $input)

8、获取目录和文件的名称:

# To find base directory
APP_ROOT=`dirname "$0"` # To find the file name
filename=`basename "$filepath"` # To find the file name without extension
filename=`basename "$filepath" .html`

此文出自老外,觉得挺好,就译了过来!不算盗版吧,哈哈!

学一点,收获一点。学到的都是自己的!

shell 脚本技巧的更多相关文章

  1. shell脚本技巧记录

    2014/4/9 shell脚本变量处理: ${varible##*string} //从左向右截取最后一个string后的字符串 ${varible#*string} //从左向右截取第一个stri ...

  2. shell 脚本实战笔记(10)--spark集群脚本片段念念碎

    前言: 通过对spark集群脚本的研读, 对一些重要的shell脚本技巧, 做下笔记. *). 取当前脚本的目录 sbin=`dirname "$0"` sbin=`cd &quo ...

  3. shell脚本小实例

    本文收集了一堆的shell脚本技巧,我说过,我写博客主要是作一些学习笔记,方便自己查阅,所以,我会搞出这么一篇文章,也没有什么不可理解的.关于这些技巧的出处,诶,我也忘了,可能来自theunixsch ...

  4. 写好shell脚本的13个技巧【转】

    有多少次,你运行./script.sh,然后输出一些东西,但却不知道它刚刚都做了些什么.这是一种很糟糕的脚本用户体验.我将在这篇文章中介绍如何写出具有良好开发者体验的 shell 脚本. 产品的最终用 ...

  5. SHELL脚本编程的常识和VI常用技巧

    来源:http://mprc.pku.edu.cn/mentors/training/TrainingCourses/material/ShellProgramming.HTM#_Toc3751808 ...

  6. shell脚本常用技巧

    shell脚本常用技巧 1.获取随机字符串或数字 ~]#echo $RANDOM | md5sum | cut -c 1-6 ~]#openssl rand -base64 4 | cut -c 1- ...

  7. Docker学习3-简单shell脚本安装mysql5.7与docker小技巧

    前言 玩过Windows中的 .bat 的小伙伴是不是觉得很有意思呢,github中一键推送.同步拉取等等操作,哈哈,当然shell脚本也是很类似,可以运行一个脚本就可以自动给我们部署好环境啦!但是这 ...

  8. 6条shell小技巧,让脚本显得不再业余【转】

    如何能让自己的shell显得不那么业余?下面6点实践一定有用. 画外音:本篇文章源自Google的一篇实践,抽取了部分1分钟能读完的内容,加入了一些分析. 一.以下面的语句开场 set -o noun ...

  9. Shell脚本字符串匹配及日常命令工具 - 用法总结(技巧指南)

    Shell提供了很多字符串和文件处理的命令,如awk.expr.grep.sed等命令,还有文件的排序.合并和分割等一系列的操作命令.下面重点总结下Shell字符串处理.文本处理以及各类命令及函数用法 ...

随机推荐

  1. hashmap 读取

    hashTable hashSet 都差不多 以hashmap为例,底层是一个散列表 数组,然后数组存出一个entry对象,对象中有两个泛型属性,一个可以指向自身类型的引用,这样就可以在每一个数组的位 ...

  2. 第二章 搭建Android开发环境

    这一章为我们讲解了如何搭建Android开发环境. 首先要了解的是Android底层开发需要哪些工具:搭建android应用程序开发环境.android NDK开发环境和交叉编译环境,前两个用来测试L ...

  3. windows、ubuntu下eclipse搭建java、Python环境问题总结

    前两篇博文分别讲述了如何在windows.ubuntu下用eclipse搭建java.python环境,下面就针对本人遇到的问题做一个总结. 一.windows下关于java环境变量JAVA_HOME ...

  4. 最小系统加载工具 systemjs

    systemjs 是一个最小系统加载工具,用来创建插件来处理可替代的场景加载过程,包括加载 CSS 场景和图片,主要运行在浏览器和 NodeJS 中.它是 ES6 浏览器加载程序的的扩展,将应用在本地 ...

  5. PHP 单引号 与双引号区别

    在PHP中,字符串的定义可以使用单引号,也可以使用双引号. PHP允许我们在双引号串中直接包含字串变量,双引号串中的变量将被解释而且替换,而单引号串中的内容总被认为是普通字符.例如: $foo = 2 ...

  6. php web系统多域名登录失败解决方法

    下面只是简单的逻辑结构,对于正式的系统需要做具体的处理. 这里需要注意的是:加解密一定需要做安全验证.但是这个方法也不够完美,两个站点必须有相同一级域名:另外这种完全基于cookie的方式,安全性不够 ...

  7. android SDK 更新问题解决

    Android在win7更新SDK时出现问题: Download interrupted: hostname in certificate didn't  match: <dl-ssl.goog ...

  8. PHP的几个常用函数的使用总结

    1.date函数:不得不说,PHP的date函数已经基本很完备了,如果你不去读PHP的手册的话,你不会发现对日期做了那么多的支持. time()  获取当前的时间戳 data() 获取自己想要的时间格 ...

  9. understand dojo/domReady!

    require(["dojo/dom", "dojo/domReady!"], function(dom){ dom.byId("helloworld ...

  10. php基础的一点注意事项

    1.要弄懂"~"运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二进制数在内存中是以补码的形式存放的 另外正数和负数的补码不一样,正数的补码,反码都是其本身,即: 正数9 ...